1、集合类概述:java
1.为何出现集合类?android
面向对象语言对事物的体现都是以对象的形式,因此为了方便对多个对象的操做,Java就提供了集合类。面试
2.数组和集合类同是容器,有何不一样?数组
数组虽然也能够存储对象,但长度是固定的;集合长度是可变的。数组中能够存储基本数据类型,集合只能存储对象。学习
3.集合类的特色测试
集合只用于存储对象,集合长度是可变的,集合能够存储不一样类型的对象。spa
2、集合的继承体系图解:code
3、学习集合体系,首先咱们先学习他们的“老大”:Collection,查询它的API文档。对象
1.Collection 位于java.util包下,并且是一个接口?!且文档中写到:JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。即并无实现类,而是靠子接口去实现类。blog
2.Collection:是集合的顶层接口,它的子体系有重复的,有惟一的,有有序的,有无序的。(后面会慢慢的讲解)
3. 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():元素的个数
* 面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
* 6:交集功能
* boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
* 7:把集合转换为数组
* Object[] toArray()
*/
4.基本功能测试
1 import java.util.ArrayList; 2 import java.util.Collection; 3 4 public class CollectionDemo { 5 public static void main(String[] args) { 6 // 测试不带All的方法 7 8 // 建立集合对象 9 // Collection c = new Collection(); //错误,由于接口不能实例化,因为是并没有实现类的顶级接口。咱们得找他的子接口,以子接口List的实现类ArrayList为例。 10 Collection c = new ArrayList();//正确 11 12 // boolean add(Object obj):添加一个元素 13 // System.out.println("add:"+c.add("hello")); 14 c.add("hello"); 15 c.add("world"); 16 c.add("java"); 17 18 // void clear():移除全部元素 19 // c.clear(); 20 21 // boolean remove(Object o):移除一个元素 22 // System.out.println("remove:" + c.remove("hello")); 23 // System.out.println("remove:" + c.remove("javaee")); 24 25 // boolean contains(Object o):判断集合中是否包含指定的元素 26 // System.out.println("contains:"+c.contains("hello")); 27 // System.out.println("contains:"+c.contains("android")); 28 29 // boolean isEmpty():判断集合是否为空 30 // System.out.println("isEmpty:"+c.isEmpty()); 31 32 //int size():元素的个数 33 System.out.println("size:"+c.size()); 34 35 System.out.println("c:" + c); 36 } 37 }
*另外根据ArrayList的add方法的源码发现始终返回true,可发现这是个可重复集合类。
*直接打印ArrayList对象,会显示出他集合内的元素,可发现,它重写了toString方法。
*c1.removeAll(c2) 只要c2的一个元素被移除了,就返回true
*c1.containsAll(c2) 得包含c2全部
*c1.retainAll(c2):
c1,c2两集合,c1,c2作交集,最终交集保存在调用者c1内,返回值是c1是否改变过,改变过则为true 不然false