集合架构支持3种类型的集合:规则集(Set),线性表(List),和图(Map),分别定义在Set,List,Map中。 Set实例存储一组互不相同的元素(集合), List实例存储一组顺序排列的元素(表), Map存储一组 对象---关键值的映射 总的架构如下: Collection接口: Set接口: HashSet具体类 LinkedHashSet具体类 TreeSet具体类 List接口: ArrayList具体类 LinkedList具体类 向量类Vector具体类 Stack具体类 Map接口: HashMap类 LinkedHashMap类 TreeMap类 HashSet的对象必须实现hashCode方法,javaAPI大多数类实现了hashCode方法。 LinkedHashSet实现了对HashSet的扩展,支持规则集内元素的排序,在HashSet中元素是没有顺序的,而在LinkedHashSet中,可以按元素插入集合的顺序进行提取 TreeSet保证集中的元素是有序的,有2种方法可以实现对象之间的可比较性: 1,添加到TreeSet的对象实现了Comparable接口; 2,给规则集的元素指定一个比较器(Comparator) 1. Collection 接口 Collection接口是 Set 、List 和 Queue 接口的父接口,提供了多数集合常用的方法声明,包括 add()、remove()、contains() 、size() 、iterator() 等。 2.Iterator接口 Iterator 也是Java集合框架的成员,主要用于遍历(即迭代访问)Collection集合中的元素,也称为迭代器。 提供的三种方法: boolean hasNext():返回集合里的下一个元素。 Object next():返回集合里下一个元素。 void remove();删除集合里上一次next方法返回的元素。 3.List的功能 List虽然绝大多数时候,只是用add()加对象,用get()取对象,用iterator()获取这个序列的Iterator,但List还有一些别的很有用的方法。 实际上有两种List:擅长对元素进行随机访问的,较常用的ArrayList,和更强大的LinkedList。LinkedList不是为快速的随机访问而设计的,但是它却有一组更加通用的方法。 Lisk(接口):List的最重要的特征就是有序;它会确保以一定的顺序保存元素。List在Collection的基础上添加了大量方法,使之能在序列中间插入和删除元素。(只对LinkedList推荐使用。)List可以制造ListIterator对象,你除了能用它在List的中间插入和删除元素之外,还能用它沿两个方法遍历List。 ArrayList*:一个用数组实现的List。能进行快速的随机访问,但是往列表中间插入和删除元素的时候比较慢。ListIterator只能用在反向遍历ArrayList的场合,不要用它来插入和删除元素,因为相比LinkedList,在ArrayList里面用ListIterator的系统开销比较高。 LinkedList:对顺序访问进行了优化。在List中间插入和删除元素的代价也不高。随机访问的速度相对较慢。(用ArrayList吧。)此外它还有addFirst(),addLast(),getFirst(),getLast(),removeFirst()和removeLast()等方法(这些方法,接口和基类均未定义),你能把它当成栈(stack),队列(queue)或双向队列(deque)来用。
|