Collection接口中的iterator方法返回Iterator接口的一个实例,使用:
next()方法顺序访问集合中的元素
hasNext()方法检测迭代器中是否还有更多的元素
remove()方法删除从迭代器返回的最后一个元素HashSet中的元素无特定顺序。
要加顺序使用LinkedHashSet,可按照元素插入Set的顺序提取;
强加一个不同的顺序使用TreeSet(Comparable接口-自然顺序,或Comparator接口-比较器顺序)。更新一个Set时,若无需保持元素的排序关系,应使用HashSet因为插入和删除元素所花的时间比较少;
当需要一个排好序的Set时,可以从这个HashSet中创建一个TreeSet。Comparator接口有两个方法:compare和equals
public int compare(Object o1,Object o2)
public boolean equals(Object element):
若指定对象也是一个比较器,并且与这个比较器有相同的排序返回true.
即:comp1.equals(comp2)等价于对于每个对象o1、o2而言,都存在
sign(comp1.compare(o1,o2))=sign(comp2.compare(o1,o2))为使得数据结构能成功序列化,比较器必须实现Serializable接口。
Comparable用来比较实现Comparable的类的对象;Comparator用来比较没有实现Comparable的类的对象。
List接口增加了面向位置的操作,并且增加了一个能双向遍历List的ListIterator;它扩展了Iterator接口,以增加对List的双向遍历能力。
ArrayList用数组存储元素,此数组是动态创建的。若元素个数超过了数组的容量,就创建一个新数组,并将当前数组的所有元素都复制到新数组中;
LinkedList在一个链表中存储元素。为从泛型类型的可变长参数表创建List,Java Arrays类提供了静态的asList方法:
public static <T> List<T> asList(T...a)
ps:
Arrays.asList与Collection.toArray一同充当了基于数组的API与基于Collection的API之间的桥梁。Java集合框架在Collections类中提供了用于List的sort、binarySearch、reverse、shuffle、copy、fill方法,
以及用于Collection的max、min、disjoint、frequency方法。- 性能上,Set优于List;HashSet优于LinkedHashSet优于TreeSet;
一般情况下,ArrayList优于LinkedList。