前言:
- Java, Android 开发也X年有余了,只是平时写业务居多,对java 集合技术只是看看,未有总结,基础不够扎实。虽然集合框架经常用,但是我们还是要仔细看看原理,不仅要会用,也要知道为什么要这么用,夯实基础,才能突破自己技术瓶颈。
Java集合简介:
- Java集合是java提供的工具包:
包含了常用的数据结构:数组、链表、队列、栈、映射等。工具包位置是java.util.*。
Java集合主要可以划分为 5个部分 :
List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays和Collections)。
**Java集合整体框架图(如下) 一图胜千言 **:
说明:
从上面整体结构图可以看出:集合类主要分为两大类:Collection和Map。
-
Collection 是高度抽象出来的一个接口,它包含了集合的基本操作和属性。
Collection主要分为List和Set两大分支。
(1)List 是一个接口,表示一个列表;
每一个元素都有它的索引。第一个元素的索引值是0,其中的元素可以重复;它的实现类主要有 ArrayList、LinkedList、Stack、 Vector ;其中 LinkedList还是实现了Queue接口,因此也可以作为队列使用。
(2) Set 接口是一个不允许有重复元素的集合(通过hashcode和equals函数保证)。
Set的实现类有HastSet和TreeSet;HashSet是通过Map中的HashMap实现的;TreeSet 是通过Map中的TreeMap实现的;TreeSet还实现了SortedSet接口,因此是有序的集合。
Map 是一个映射接口,其中的每个元素都是一个key-value键值对;AbstractMap实现了Map接口中的大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现; Hashtable虽然继承于Dictionary,但它实现了Map接口。
迭代器
Iterator 是遍历集合的迭代器(不能遍历Map,只用来遍历Collection),从上图可以看到Collection依赖 于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象。
ListIterator 是专门为遍历List而存在的。
Enumeration 是JDK 1.0引入的抽象类。作用和Iterator一样,也是遍历集合;但是Enumeration的功能要比Iterator少;它只能再Hashtable、Vector和Stack中使用。最后我们看看Arrays和Collections。它们是操作数组、集合的两个工具类。
我们对上面的集合整体框架了解之后,我们接下来对每个类分别进行分析。