Java基础学习(五)—Collection

一、Collection概述

1.数组和集合的区别

(1)长度区别

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

(2)存储内容区别

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

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

二、集合的体系

image

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);
		}
原文地址:https://www.cnblogs.com/yangang2013/p/5622127.html