上面一篇我们对ListIterator进行了分析,接下来我们看看Collection 。
Collection 接口:
java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
Collection接口中的方法:
int size();
返回一个集合的大小.boolean isEmpty();
判断集合里元素是否为空.boolean contains(Object o);
判断是否包含指定的元素.Iterator< E > iterator();
获取迭代器Object[] toArray();
将集合直接转为Object[] 数组.< T > T[] toArray(T[] a);
将集合转化为你所需要类型的数组,在我们用的时候会转化为与list内容相同的类型boolean add(E e);
添加一个元素 , 添加成功返回true,添加失败返回false.boolean remove(Object o);
删除集合中指定的元素,删除成功返回true , 删除失败返回false.boolean containsAll(Collection< ? > c);
是否包含指定集合 c 的全部元素 .boolean addAll(Collection< ? extends E > c);
将集合c中的所有元素到添加到本集合中.boolean removeAll(Collection< ? > c);
删除c集合与本集合中的交集元素。boolean retainAll(Collection< ? > c);
保留c集合与本集合的交集元素,其他的元素都删除.void clear();
清除集合中所有元素.default Spliterator< E > spliterator()
在JDK 8 以后 , 返回一个可分割的迭代器,关于可分割迭代器.default Stream< E > stream()
在JDK 8 以后, 返回当前集合的流,如果当前集合无法返回spliterator,则需要重写此方法.default Stream< E > parallelStream()
在JDK 8 以后, 返回一个可并行流.
下面我通过例子看看上面方法的使用:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Collection<String> c1 = new ArrayList<>();
c1.add("a"); // 添加一个元素,添加成功返回true,添加失败返回false.
c1.add("b");
c1.add("c");
Collection c2 = new ArrayList();
c2.add("d");
c2.add("a");
c2.add("f");
// c1.addAll(c1);// 把c2集合的元素添加到c1集合中去。
System.out.println(c1.addAll(c1));
// c1.removeAll(c2); //删除c1集合中与c2集合的交集元素。
// c1.retainAll(c2); // 保留c1集合与c2集合的交集元素,其他的元素都删除。
// c1.clear();//清除c1集合里全部元素
// c1.remove("周改好康");//移除c1集合中指定元素
// c1.contains("a");//判断c1集合中是否存在指定的元素
c1.containsAll(c2); //判断c1集合是否包含c2集合所有元素
//toArray用法1
Object[] array= c1.toArray();//将list转为数组
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
//toArray用法2
String[] strings = new String[array.length];
String[] strings2 = c1.toArray(strings);
for (int i = 0; i < strings2.length; i++) {
System.out.println(array[i]);
}
}
}
总结
Collection:集合层次中的根接口,JDK 没有提供这个接口直接的实现类。
Collection 接口是构造类集框架的基础。它声明所有类集都将拥有的核心方法。因为所有类集实现 Collection,所以熟悉它的方法对于清楚地理解框架是必要的。