• 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);
    		}
  • 相关阅读:
    hdu 5916
    hdu 5918
    hdu 5914 Triangle
    hdu 5912Fraction
    遗传算法初学习
    hdu 5873 Football Games
    JAVA 定时器的三种方法
    java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
    Eclipse设置Tab键缩进4个空格的步骤,也就是按一下Tab键输出四个空格
    Nginx 相关介绍(Nginx是什么?能干嘛?个人觉得写得比较好的文章,转载过来)
  • 原文地址:https://www.cnblogs.com/yangang2013/p/5622127.html
Copyright © 2020-2023  润新知