以下内容整理自互联网,仅用于个人学习
Java集合框架大致可分为五个部分:List,Set,Map,迭代器(Iterator,Enumeration),工具类(Arrays,Collections)
集合类主要分为两大类:Collection和Map。
Collection是List、Set等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为两大部分:List和Set。
List接口通常表示一个列表(数组、队列、链表、栈等),其中的元素可以重复,常用实现类为ArrayList和LinkedList,另外还有不常用的Vector。LinkedList还实现了Queue接口,因此也可以作为队列使用。
Set接口通常表示一个集合,其中的元素不允许重复。常用实现类有HashSet和TreeSet,HashSet是通过Map中的HashMap实现的,而TreeSet是通过Map中的TreeMap实现的。TreeSet实现了SortedSet接口,因此是有序的集合。
Map是一个映射接口,其中的每个元素都是一个key-value键值对,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不常用的HashTable直接实现了Map接口,它和Vector都是JDK1.0就引入的集合类。
Iterator是遍历集合的迭代器(不能遍历Map,只用来遍历Collection),Collection的实现类都实现了iterator()函数,它返回一个Iterator对象,用来遍历集合,ListIterator则专门用来遍历List。而Enumeration则是JDK1.0时引入的,作用与Iterator相同,但它的功能比Iterator要少,它只能再Hashtable、Vector和Stack中使用。
Arrays和Collections是用来操作数组、集合的两个工具类,例如在ArrayList和Vector中大量调用了Arrays.Copyof()方法,而Collections中有很多静态方法可以返回各集合类的synchronized版本,如果要用线程安全的结合类,首选Concurrent并发包下的对应的集合类。
Collections功能
- 二分查找
- 为Collection添加不定数量参数作为子元素
- 将一个List所有元素复制到另一个List
- 获取Collection中最大最小值
- 判断两个元素是否相等
- 对集合排序
- 返回单例
- 将线程不安全的Map、Set转为线程安全的对象
Arrays功能
- 二分查找
- 将数组转化为List对象
- 复制数组指定范围的元素为一个新的数组
- 给数组指定范围的每个元素赋一个值,排序等
Collection包结构,与Collections的区别
Collection是一个接口,它是Set、List等容器的父接口;Collections是一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。