Collections是个java.util下的类,是针对集合类的一个工具类,提供一系列静态方法,实现对集合的查找、排序、替换、线程安全化(将非同步的集合转换成同步的)等操作,比如:
Collections.sort(list);//list集合进行元素的自然顺序排序
int index = Collections.binarySearch(list,"zz");//二分查找,返回角标。
Collection是个java.util下的接口,它是各种集合结构的父接口,继承于它的接口主要有Set和List,提供了关于集合的一些操作,比如:
- 添加:
add(object):添加一个元素
addAll(Collection) :添加一个集合中的所有元素。 - 删除:
clear():将集合中的元素全删除,清空集合。
remove(obj) :删除集合中指定的对象。注意:删除成功,集合的长度会改变。
removeAll(collection) :删除部分元素。部分元素和传入Collection一致。 - 判断:
boolean contains(obj) :集合中是否包含指定元素 。
boolean containsAll(Collection) :集合中是否包含指定的多个元素。
boolean isEmpty():集合中是否有元素。 - 获取:
int size():集合中有几个元素。 - 取交集:
boolean retainAll(Collection) :对当前集合中保留和指定集合中的相同的元素。如果两个集合元素相同,返回flase;如果retainAll修改了当前集合,返回true。 - 获取集合中所有元素:
Iterator iterator():迭代器 - 将集合变成数组:
toArray();
分析下面的代码:
Collection list = new ArrayList();
list.add("hello");
已知Collection是接口,那么上面的代码怎理解呢?
——这是java中的一种多态现象。首先要明确java中的接口不能被实例化,但是可以通过接口引用指向一个对象,这样通过接口来调用方法可以屏蔽掉具体的方法的实现,这是在JAVA编程中经常用到的接口回调,也就是经常说的面向接口的编程。
——当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。