实现该接口的类,对象能够经过foreach方式遍历。数组
该接口中只定义了一个方法,返回iterator对象。安全
这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也就是说若是是先Iterator接口,那么在遍历集合中元素的时候,只能日后遍历,被遍历后的元素不会在遍历到,一般无序集合实现的都是这个接口,好比HashSet,HashMap;而那些元素有序的集合,实现的通常都是LinkedIterator接口,实现这个接口的集合能够双向遍历,既能够经过next()访问下一个元素,又能够经过previous()访问前一个元素,好比ArrayList。性能
继承了Iterable接口,可以使用foreach遍历。优化
子接口有:线性表 List接口,去重集合Set接口,队列Queue接口。线程
& 经常使用操做3d
添加元素:add/addAll 对象
清空集合:clear blog
删除元素:remove/removeAll 继承
判断集合中是否包含某元素:contains/containsAll 接口
判断集合是否为空:isEmpty
计算集合中元素的个数:size
将集合转换为数组:toArray
获取迭代器:iterator
& 遍历
1)迭代器 Iterator
2)foreach遍历
对数组的有效扩展。数组的容量是固定的,而List的容量是动态扩展的。
经常使用的实现类:ArrayList(基于数组), LinkedList(链表存储),Vector(线程安全的,基于数组),其中Vector还有一个子类Stack, 但Vector和Stack类已经不多使用了。
List中能够存储null,即便使用了泛型。
& ArrayList 包装了一个数组, 当实例化一个ArrayList时,会实例化该数组。 向ArrayList添加对象时,ArrayList也在调整着数组的大小。优点是快速访问,get()方法很是快。缺点是插入删除操做慢,由于建立数组时并不能肯定容量,因此在插入时,一方面须要扩容,另外一方面须要把位置i以后的全部元素都向后移。
& LinkedList 链式存储,插入删除很是快,只须要修改节点引用 。新的节点能够存储在内存中的任何地方。缺点是不能快速访问,get()方法是经过遍历节点来定位的。
set接口是一种不包含重复元素的Collection。
经常使用的实现类有HashSet和TreeSet。
HashSet使用哈希法来优化查询速度。不保证元素的存储顺序,尤为是存储顺序会动态变化(哈希表扩容引发)。
容许使用null元素。
TreeSet的性能不如HashSet,由于它须要维护元素有序。
Map接口提供key到value的映射。不能包含相同的Key, 一个key只能映射一个value。
提供3种集合视图:key集合, value集合, key-value映射。
经常使用实现类:HashMap, TreeMap, Hashtable, LinkedHashMap。