List,Queue,Set继承于Colletion,而Colletion继承于Iterable
List:以特定顺序保存一组元素,实现List接口有:
ArrayList:长于随机访问元素,但是在List中插入和移除元素比较慢
LinkedList:在List中插入和移除元素比较快,提供了优化的顺序访问,不长于随机访问元素。
Queue: 先进先出,多用于并发编程。
PriorityQueue:一个基于优先级堆的无界优先级队列。
Stack
:
后进先出,方法有:
peek() 查看堆栈顶部的对象,但不从堆栈中移除它。
pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。
push(E item) 把项压入堆栈顶部
Set:键值对。实现Set接口有:
LinkedHashSet:具有HashSet的查询速度,按照被添加的顺序保存对象。存入LinkedHashSet的元素必须定义hashCode()。
TreeSet:按照比较结果的升序保存对象,使用红-黑树数据结构。存入TreeSet的元素必须实现Comparable接口。
HashSet:查找速度最快,无序保存对象,使用散列函数。存入HashSet的元素必须定义hashCode()。
SortedSet:按照对象的比较函数对元素排序。
Map:
LinkedHashMap:按照被添加的顺序或最近最少使用保存对象,迭代访问时速度更快。
TreeMap:按照比较结果的升序保存对象。方法subMap,可以返回一个子树。
HashMap:查找速度最快,无序保存对象。
SortedMap:按照对象的比较函数对元素排序。
Collections.addAll() 方法接受一个Collection对象,以及一个数组或一个用逗号分隔的列表(使用可变参数)。
Collection.addAll() 方法接受一个Collection对象。
Arrays.asList() 方法接受一个数组或一个用逗号分隔的列表(使用可变参数),表面是List,底层其实是数组,故不能调整其大小,不能使用add或delete
迭代器有两种:
ListIterator:双向移动
Iterator:向前移动