Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如链表、栈、队列、集合、哈希表等,学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。
集合框架接口声明了对各种集合类型执行的一般操作,基本结构如下图所示
List接口用于表示列表,其中的元素可以重复,常用实现类为ArrayList和LinkedList,此外还有不常用的Vector。另外LinkedList还是实现了Queue接口,因此也可以作为队列使用。
Set接口通常表示一个集合,其中的元素不允许重复(通过hashcode和equals函数实现),实现Set接口的类有HashSet和TreeSet,HashSet是通过Map中的HashMap实现的,而TreeSet是通过Map中的TreeMap实现的。另外,TreeSet还实现了SortedSet接口,因此是有序的集合(集合中的元素要实现Comparable接口,并覆写Compartor函数才行)。
Map是一个映射接口,其中的每个元素都是一个key-value键值对,同样抽象类AbstractMap实现了Map接口中的大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不常用的HashTable直接实现了Map接口,结构如图所示。
Iterator是遍历集合的迭代器(不能遍历Map,只用来遍历Collection),ListIterator则专门用来遍历List。而Enumeration则是JDK1.0时引入的,作用与Iterator相同,但它的功能比Iterator要少,比如没有删除操作。
Arrays和Collections是用来操作数组、集合的两个工具类。Collections提供了一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作,Arrays专门用来操作array ,提供搜索、排序、复制等静态方法。