一,什么是java集合框架?
答:Java集合框架是一套用来创建集合类(collectionclass)的泛型。集合类提供了多种方式用于存储和管理内存中任意类型的对象。集合类是以诸如链表或者堆栈之类的方式组织一套给定类型的对象的类。构成集合框架的主要类型定义在java.util包中。
二,集合框架中的接口
java.util包中定义了8个泛化的集合接口,它们决定了每种集合类可以使用的方法,这些接口之间的关系如图2-1所示。
我们可以看到映射的接口与集和列表实现的接口没有关联。还可以看到映射的接口没有实现Iterable接口,所以它不能用于迭代处理映射中的对象。
Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。
Set:不能包含重复的元素。SortedSet是一个按照升序排序的Set。
List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。
Queue:java5新增了Queue接口,用以支持队列的常见操作。LinkList类实现了Queue接口。
Map:包含了Key-Value对。Map不能包含重复的Key。SortedMap是一个按照升序排列Key的Map。
集合框架中的实现类及其关系如2-2所示。
图 2-2
1,List接口扩展了Collection并声明存储一系列元素的类集的特性。使用一个基于零的下标,元素可以通过他们在列表中的位置被插入和访问。一个列表可以包含重复元素。
2,Set接口定义了一个集合。它扩展了Collection并说明了不允许复制元素的类集的特性。因此,如果试图将复制元素加到集合中时,add()方法将返回false。它本身并没有定义任何附加方法。
3,SortedSet接口扩展了Set并说明了按升序排列的集合的特性。当没有项包含在调用集合中时,其中的几种方法引发NoSuchElementException异常。
4,HashMap实现一个映射,其中键的类型为K,值的类型为V,并且所有的键必须非null。定义有键的类必须实现方法hashcode()和equals()方法才能有效地工作。
5,TreeMap实现的映射中,对象按照键的升序排序。
6,HashSet是HashMap实现的集。虽然集的定义是无序的但是还是需要某种方法能合理地有效地找出对象。使用HashMap对象实现集可以保证存取操作能在固定时间内完成。但随着时间的过去,集中对象的访问次序没必要保持不变。
7,LinkedHashSet使用散列表实现的集,并且散列表的所有项都链接在双向列表中。该类可以用来创建任何集的副本(HashSet除外)的副本,以便保存迭代顺序。
8,TreeSet集中对象按升序排列的集,这意味着从TreeSet对象获得的迭代器能提供升序排列的对象。实质上TreeSet类使用TreeMap对象。
9,ArrayList实现变长数组,且可以像列表一样被访问。其功能与泛型Vector类似,然而它是异步的,所以不能安全的用于多线程。
10,LinkedList实现一个链表。该类定义的链表也可以用作栈或者队列。