集合的结构以下图所示:安全
集合的两个顶级接口分别为:Collection和Map函数
Collection下有两个比较经常使用的接口分别是List(列表)和Set(集),其中List能够存储重复元素,元素是有序的(存取顺序一致),能够经过List脚标来获取指定元素;而Set不能够有重复元素,元素是无序的。线程
List接口中,比较经常使用的类有三个:ArrayList、Vactor、LinkedList。3d
ArrayList :线程不安全的,对元素的查询速度快。cdn
Vector :线程安全的,多了一种取出元素的方式:枚举(Enumeration),但已被ArrayList取代。对象
LinkedList :链表结构,对元素的增删速度很快。blog
Set接口中,比较经常使用的类有两个:HashSet、TreeSet:排序
HashSet:要保证元素惟一性,须要覆盖掉Object中的equals和hashCode方法(由于底层是经过这两个方法来判断两个元素是不是同一个)。接口
TreeSet:以二叉树的结构对元素进行存储,能够对元素进行排序。get
排序的两种方式:
一、元素自身具有比较功能,元素实现Comparable接口,覆盖compareTo方法。
二、创建一个比较器对象,该对象实现Comparator接口,覆盖compare方法,并将该对象做为参数传给TreeSet的构造函数(能够用匿名内部类)。
Map接口其特色是:元素是成对出现的,以键和值的形式体现出来,键要保证惟一性:经常使用类有:HashMap,Hashtable ,TreeMap。
HashMap:线程不安全等的,容许存放null键null值。
Hashtable:线程安全的,不容许存放null键null值。
TreeMap:能够对键进行排序(要实现排序方法同TreeSet)。
Collection和Map两个接口对元素操做的区别:
存入元素:
Collection接口下的实现类经过add方法来完成,而Map下是经过put方法来完成。
取出元素:
Collection接口下:List接口有两种方式:一、get(脚标);二、经过Iterator迭代方式获取元素;而Vactor多了一种枚举(Enumeration)的方式。Set接口经过迭代的方式获取元素。
Map接口下:先通地keySet获取键的系列,而后经过该系列使用Iterator迭代方式获取元素值。