Java中关于Collection集合(接口)的介绍

Collection

Collection层次结构中的跟接口。Collection表示一组对象,这些对象也被称为Collection的元素,一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。
Java中关于Collection集合(接口)的介绍

集合和数组的区别

  1. 长度的区别
    数组长度是固定的. int[] arr = new int[3]/int[] arr = {11,22,33…} ;
    集合长度是可变的!
  2. 存储数据类型的区别
    数组既可以存储基本数据类型,也可以存储引用数据类型
    集合只能存储引用数据类型
  3. 存储元素的区别
    数组存储同一种类型的元素 举例: 水杯中的水
    集合可以存储多个类型的元素

Collection的基本功能

添加功能
boolean add(Object e); 添加单个元素
boolean addAll(Collection c); 添加一个集合中的元素
删除功能
void clear(); 删除所有元素
remove(Object o); 删除一个元素
removeAll(Collectiong c) 移除一个集合中的元素,移除的元素是两个集合的交集元素,如果没有交集元素,则删除失败。
获取功能
int size(); 获取元素的方法
Interator interator(); 迭代器(遍历集合的特有功能)
转换功能
Object[] toArray(); 将集合转换成数组
交集功能
boolean retainAll(Collection c)A集合对B集合取交集,获取到的交集元素在A集合中。
判断功能
boolean contains(Object o):一个集合中是否包含指定的元素
boolean containsAll(Collection c)包含一个集合中的元素 思考: 包含一个算是包含还是包含所有算是包含?
boolean isEmpty():判断集合是否为空. 空,就是true

Collection c1 = new ArrayList();
Collection c2 = new ArrayList();

//添加功能
c1.add("hello");            //添加一个元素
c1.add("world");
c2.add("world");
System.out.println(c1);     //[hello, world]
System.out.println(c2);     //[world]
//删除功能
c1.remove("hello");      //删除一个元素
System.out.println(c1);     //[world]
System.out.println("--------------------------------------");

c1.add("hello");
c1.add("java");          //c1:hello world java  c2: world

c1.removeAll(c2);           //移除一个集合中的元素,移除的元素是两个集合的交集元素
System.out.println(c1);     //[hello, java]
System.out.println("--------------------------------------");
//获取功能
System.out.println(c1.size());//2
System.out.println("--------------------------------------");
//转换功能
Object[] objects = c1.toArray();//将集合转换成数组
for (Object object : objects) {
System.out.println(object);
}
//hello
//java
System.out.println("--------------------------------------");
//判断功能
System.out.println(c1 +","+c2); //[hello, java],[world]
System.out.println(c1.contains("hello"));//判断c1中是否包含hello  有应该返回true
System.out.println(c1.containsAll(c2));
System.out.println(c1.isEmpty());         //判断集合是否为空.  集合非空 返回false

Collection中要注意的高级功能

boolean removeAll(Collection c):移除一个集合中的元素 思考:移除一个算是移除还是移除所有算是移除呢?
删除一个就算返回true!

Collection c1 = new ArrayList();
Collection c2 = new ArrayList();
c1.add("hello");
c1.add("world");
c1.add("I");
c1.add("Love");
c1.add("Java");

//c2.add("I");
c2.add("Love");
c2.add("You");

System.out.println(c1+","+c2);
boolean b = c1.removeAll(c2);
System.out.println(b);
System.out.println(c1+","+c2);

//        [hello, world, I, Love, Java],[Love, You]
//        true
//        [hello, world, I, Java],[Love, You]

boolean containsAll(Collection c):包含一个集合中的元素 思考: 包含一个算是包含还是包含所有算是包含?
包含所有才算是包含,如果下面的c2中有 “You”,就会返回false

 Collection c1 = new ArrayList();
 Collection c2 = new ArrayList();
 c1.add("hello");
 c1.add("world");
 c1.add("I");
 c1.add("Love");
 c1.add("Java");

 c2.add("I");
 c2.add("Love");
//c2.add("You");

 System.out.println(c1+","+c2);
 boolean b = c1.containsAll(c2);
 System.out.println(b);          

 //[hello, world, I, Love, Java],[I, Love]
 //true

boolean retainAll(Collection c) :思考假设A集合对B集合取交集,交集的元素去哪里?
交集元素会在A里,返回的boolean表达的意思A集合中的元素是否发生变化.如果没有变化,false。

Collection c1 = new ArrayList();
Collection c2 = new ArrayList();

c1.add("hello");
c1.add("world");
c1.add("I");
c1.add("Love");
c1.add("Java");

c2.add("I");
c2.add("Love");
c2.add("You");

System.out.println(c1+","+c2);
boolean b = c1.retainAll(c2);
System.out.println(b);
System.out.println(c1+","+c2);

//[hello, world, I, Love, Java],[I, Love, You]
//true
//[I, Love],[I, Love, You]

集合的遍历

把集合转换为数组,再用for循环遍历

Collection c1 = new ArrayList();
Object[] objects = c1.toArray();//将集合转换成数组
for (Object object : objects) {
System.out.println(object);
}

集合的专有遍历:迭代器

Collection c1 = new ArrayList();

c1.add("hello");
c1.add("world");
c1.add("I");
c1.add("Love");
c1.add("Java");

//获得迭代器
Iterator iterator = c1.iterator();
while (iterator.hasNext()){
    String str = (String) iterator.next();

    System.out.println(str+" 长度是:"+str.length());
}
/*hello 长度是:5
world 长度是:5
I 长度是:1
Love 长度是:4
Java 长度是:4 */