2.java基础回顾集合1

1.Collection集合

概念:集合是java中提供的一种容器,可以用来存储多个数据。

集合和数组有什么区别:

  • 集合的长度是可变的,数组长度是不可变的
  • 集合中只能存储对象类型,数组可以是基本类型(8种)还可以是对象类型

Collection接口:定义的是所有单列集合中共性的方法,所有单列集合都可以使用共性方法,没有带索引的方法

  • List接口:有序的集合,允许存储重复的元素,有索引可以使用for循环遍历

    • Vector集合
    • ArrayList集合
    • LinkedList集合
  • Set接口:不允许存储重复元素,没有索引不能通过普通for循环遍历,但可以使用foreach遍历
    • TreeSet集合
    • HashSet集合:
      • LinkedHashSet集合

2.Collection接口常用功能

  • public boolean add(E e):把给定的对象添加到当前集合中
  • public void clear():清空集合中所有元素
  • public boolean remove(E e):把给定的对象在当前集合中删除
  • public boolean contains(E e):判断当前集合中是否包含给定的对象
  • public boolean isEmpty():判断当前集合是否为空
  • public int size():返回集合中元素的个数
  • public Object[] toArray():把集合中的元素,存储到数组中
 1 Collection<String> coll = new ArrayList<>();
 2 System.out.println(coll);   //[]
 3
 4 coll.add("s1");
 5 coll.add("s2");
 6 coll.add("s3");
 7 coll.add("s4");
 8 coll.remove("s1");
 9
10 System.out.println(coll.isEmpty());     //false
11 System.out.println(coll.contains("s2"));    //true
12 System.out.println(coll.size());    //3
13 System.out.println(coll);       //[s2, s3, s4]
14
15 Object[] arr = coll.toArray();
16 for (int i = 0; i < arr.length; i++) {
17     System.out.print(arr[i] + ","); //s2,s3,s4,
18 }
19 System.out.println();
20
21 coll.clear();
22 System.out.println(coll.size());    //0

3.Iterator接口:迭代器(对集合进行遍历)

两个常用方法:

  • boolean hasNext():如果仍有元素可以迭代返回true
  • E next():返回下一个元素

Iterator迭代器我们无法正常使用,需要使用Iterator接口的实现类,Collection接口中iterator()方法返回迭代器对象的实现类Iterator<E> iterator()。

迭代器使用步骤:

  1. 获取迭代器
  2. 判断是否还有元素
  3. 获取下一个元素
1 Iterator<String> it = coll.iterator();
2
3 while (it.hasNext()){
4     System.out.println(it.next());
5 }

4.增强for循环

JDK1.5之后出现的新特性,所有的单列集合都可以使用增强for循环

格式:

  for(集合/数组的数据类型 变量名:集合名/数组名){

  }

1 for (Object s : arr
2 ) {
3     System.out.println(s);
4 }
5
6 for (String s : coll
7 ) {
8     System.out.println(s);
9 }

5.泛型

泛型类:

  语法:修饰符 class 类名<代表泛型的变量>{ }

 1 class TestClass<E>{
 2     private E name;
 3
 4     public E getName(){
 5         return name;
 6     }
 7
 8     public void setName(E name){
 9         this.name = name;
10     }
11 }

泛型方法:

  语法:修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }

 1 class TestMethod{
 2     public <E> void show1(E e){
 3         System.out.println(e.getClass());
 4     }
 5
 6     public <E> E show2(E e){
 7         return e;
 8     }
 9
10 }

泛型接口:

  语法:修饰符 interface 接口名<代表泛型的变量>{ }

1 interface TestInterface<E>{
2
3     public abstract void add(E e);
4
5     public abstract E getE();
6 }

泛型通配符:

  • 上界限定:? extends E   代表使用泛型只能是E类型的子类/本身
  • 下界限定:? super E  代表使用泛型只能是E类型的父类/本身
 1 public static void testExtends(Collection<? extends Number> coll) {
 2     System.out.println("coll中的元素只能是Number或Number的子类");
 3 }
 4
 5 public static void testSuper(Collection<? super Number> coll) {
 6     System.out.println("coll中的元素只能是Number或Number的父类");
 7 }
 8
 9
10 public static void main(String[] args) {
11
12     Collection<Integer> coll1 = new ArrayList<>();
13     Collection<Number> coll2 = new ArrayList<>();
14     Collection<Object> coll3 = new ArrayList<>();
15
16     testExtends(coll1);
17     testExtends(coll2);
18     testSuper(coll2);
19     testSuper(coll3);
20
21 }

原文地址:https://www.cnblogs.com/zhihaospace/p/12116159.html

时间: 2024-10-14 21:06:06

2.java基础回顾集合1的相关文章

4.java基础回顾集合3

1.Map集合: java.util.Map<k,v>包中 一个双列集合,一个元素包含两个值(key,value) key和value的数据类型可以相同,也可以不相同 key不允许重复,value允许重复 key和value一一对应 Map常用子类: HashMap:实现Map<k,v>接口,多线程的 JDK1.8之前用数组+单向链表,之后用数组+单向链表/红黑树(数组长度超过8时使用红黑树),提高了查询的速度 无序集合,存储元素和取出元素顺序可能不一致 LinkedHashMap

四、Android学习第四天——JAVA基础回顾(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的第四天,在程序中已经遇到了JAVA中以前不常用的一些知识点,赶紧回顾复习一下,打下基础 这里就做个简单的小结: 一.匿名内部类 匿名内部类说白了就是个没有被命名的JAVA类 在以下条件下使用匿名内部类比较适合: ①只用到该类的一个实例时 ②类在定义后被马上用到 ③类非常小(SUN推荐是在4行代码以下

java基础之集合Set

1.集合 当向集合Set中增加对象时,首先集合计算要增加对象的hashcode,根据该值得到一个位置用来存放当前的对象,当在该位置没有一个对象存在的时候,集合set认为该对象在集合中不存在,直接增加进去.如果在该位置有一个对象存在,接着将准备增加到集合中的的对象与该位置上的对象进行equals比较,若返回false,在进行一次散列,将该对象放到散列后计算出的新地址.若返回true,不会再将该对象增加到集合中 2.当重写equals方法时,必须要重写hashcode方法 如果一个类的两个对象,使用

java基础之集合List-ArrayList、LinkedList、Vector的区别

PS:本篇博客主要参考jdk的底层源码,而非自己动手写代码. 请问ArrayList.LinkedList.Vector的区别 ①ArrayList底层实际上是采用数组实现的(并且该数组的类型的Object类型的) ②如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度时候) ③List list = newArrayList()时,底层会生成一个长度为10的数组来存放对象 ④Arra

黑马程序员——java基础 ArrayList集合基本方法演示

java基础 ArrayList集合基本方法演示 import java.util.ArrayList; import java.util.Iterator; public class ArrayListDemos { public static void main(String[] args) { // 创建一个新的容器 ArrayList al = new ArrayList(); al.add("abc1"); al.add("abc2"); al.add(&

Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)

Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就是对数据结构的封装 数组与集合的比较 数组:长度固定,可以存储基本数据类型,也能存储对象 集合:长度可变,只能存储对象类型(由于有包装类的存在,集合可以存储任何类型) 集合的体系结构 集合也叫容器,用于存储对象 我们根据不同的需求和不同的数据结构来对集合做了不同的抽象 Collection接口-公共

【DAY26】JAVA 基础回顾

基础回顾 ---------------- 1.跨平台 os JVM : sandbox 1995 2.基本数据类型 byte //1 -128 ~ 127 short //2 -32768 - 32767 int //4 long //8 float //4 doule //8 char //2 boolean //1 3.引用类型 [] class interface 4.运算符 && //短路 || //短路 & // | // ^ //抑或,相同0,不同为1 >>

1、java基础回顾与加强

一.    基础回顾 1   集合 1.1  集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList:    数组实现, 查找快, 增删慢 由于是数组实现, 在增和删的时候会牵扯到数组 增容, 以及拷贝元素. 所以慢.数组是可以直接按索引查找, 所以查找时较快 ---|LinkedList:   链表实现, 增删快, 查找慢由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后

JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的映射.key不能重复,一对对的存储方式 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1.2.方法 嵌套类摘要 static interface Map.Entry<K,V> 映射项(键-值对). 方法摘要 void clear() 从此映射中移除所有映射关系(可选操