一、Collection概述

1.数组和集合的区别

(1)长度区别

     数组长度是固定的,集合长度是可变的。

(2)存储内容区别

     数组只能存放同一种类型的元素(基本类型/引用类型)。

     集合可以存储不同类型的对象。

 

二、集合的体系

Java基础学习(五)—Collection-LMLPHP

Collection

Collection是集合体系的根接口,它包含了集合的基本操作和属性。

Collection包含了List和Set两大分支。

(1)List是一个有序的队列,每一个元素都有它的索引,第一个元素的索引值是0。

    List的实现类有:ArrayList、LinkedList、Vector、Stack。

(2)Set是一个不允许有重复元素的集合。

    Set的实现类有HashSet、TreeSet。HashSet底层通过HashMap实现,TreeSet底层通过TreeMap实现。

(3)Map是一个映射接口,即key-value键值对。

    AbstractMap是个抽象类,它实现了Map接口中大部分的API,HashMap、TreeMap都是基础与AbstractMap。

    HashTable虽然继承于Dictionary,但它实现了Map接口。

 

三、相关方法

		/*
* Collection的功能概述:
* 1:添加功能
* boolean add(Object obj):添加一个元素
* boolean addAll(Collection c):添加一个集合的元素
* 2:删除功能
* void clear():移除所有元素
* boolean remove(Object o):移除一个元素
* boolean removeAll(Collection c):移除一个集合的元素
* 3:判断功能
* boolean contains(Object o):判断集合中是否包含指定的元素
* boolean containsAll(Collection c):判断集合中是否包含指定的集合元素
* boolean isEmpty():判断集合是否为空
* 4:获取功能
* Iterator<E> iterator()
* 5:长度功能
* int size():元素的个数
* 6:交集功能
* boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
* 7:把集合转换为数组
* Object[] toArray()
*/

 

1.基础测试

	@Test
public void testCollection(){ //创建集合对象
Collection c = new ArrayList(); //1.add():添加一个元素
c.add("AAA");
c.add("BBB");
c.add("CCC");
System.out.println(c); //2.remove():移除一个元素
c.remove("BBB");
System.out.println(c); //3.contains():判断集合中是否包含指定的元素
System.out.println("contains AAA : " + c.contains("AAA")); //4.isEmpty():判断集合是否为空
System.out.println("isEmpty: " + c.isEmpty()); //5.size():元素的个数
System.out.println("size: " + c.size()); //6.clear()
c.clear();
System.out.println(c);
System.out.println("isEmpty: " + c.isEmpty()); }

结果:

      [AAA, BBB, CCC]

      [AAA, CCC]

      contains AAA : true

      isEmpty: false

      size: 2

      []

      isEmpty: true

 

2.带All的测试

     先初始化两个集合对象,然后进行测试。

		//初始化集合对象
Collection c1 = new ArrayList();
c1.add("abc1");
c1.add("abc2");
c1.add("abc3"); Collection c2 = new ArrayList();
c2.add("abc3");
c2.add("abc4");
c2.add("abc5");

 

addAll(Collection c): 添加一个集合的元素。

		c1.addAll(c2);
System.out.println("c1: " + c1);

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1: [abc1, abc2, abc3, abc3, abc4, abc5]

 

removeAll(Collection c): 移除一个集合的元素。

		c1.removeAll(c2);
System.out.println("c1: " + c1);

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1: [abc1, abc2]

 

containsAll(Collection c): 判断集合中是否包含指定的集合元素。

System.out.println("c1.containsAll(c2): " + c1.containsAll(c2));

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1.containsAll(c2): false

 

retainAll(Collection c): 两个集合的交集。

		c1.retainAll(c2);
System.out.println("c1 : " + c1);

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1: [abc3]

 

3.其他测试

Object[] toArray(): 把集合转成数组,可以实现集合的遍历。

		//初始化集合对象
Collection c = new ArrayList();
c.add(new Person("AAA",20));
c.add(new Person("BBB",21));
c.add(new Person("CCC",22)); //把集合转换为数组
Object[] arr = c.toArray(); for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}

 

Iterator iterator(): 迭代器,集合的专用遍历方式。

		//初始化集合对象
Collection c = new ArrayList();
c.add(new Person("AAA",20));
c.add(new Person("BBB",21));
c.add(new Person("CCC",22)); //iterator():迭代器,集合专用的遍历方式
Iterator it = c.iterator();//实际返回的是子类对象
while(it.hasNext()){
Person p = (Person)it.next();
System.out.println(p);
}
05-08 15:07