java集合类的特色

今天第一次去参加公司的招聘会,在面试中问到了有集合的特色,可是当时只答出来了一部分,不过还好,面试官对个人答案还挺满意的,顺利的经过了面试!获得了来之不易的实习机会!java

面试回学校后,经过翻阅书籍和查询网络资源,对集合类的特色作了,以下总结!面试

集合类的祖先接口分别是collection和map; 而collection中,已知所实现的类分别有:AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector安全

而collection接口中有两个经常使用的子接口分别是list<E>和set<E>.在list<E>接口下又有以下实现的集合类:AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector,像经常使用的ArrayList和LinkedList Vector都包含在其中.而set<E>接口下又实现了以下类:AbstractSet, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet,像经常使用的HashSet和TreeSet;而这两个不一样接口下所实现的类,不一样点主要是list下的集合类,能够顾念重复元素,元素是有序的(存取顺序一致),能够经过List脚标来获取指定元素;而Set不能够有重复元素,元素是无序的。List接口中,比较经常使用的类有三个:ArrayList、Vactor、LinkedList。网络

ArrayList :线程不安全的,对元素的查询速度快。函数

Vector :线程安全的,多了一种取出元素的方式:枚举(Enumeration),但已被ArrayList取代。spa

LinkedList :链表结构,对元素的增删速度很快。线程

Set接口中,比较经常使用的类有两个:HashSet、TreeSet:对象

HashSet:要保证元素惟一性,须要覆盖掉Object中的equals和hashCode方法(由于底层是经过这两个方法来判断两个元素是不是同一个)。排序

 

TreeSet:以二叉树的结构对元素进行存储,能够对元素进行排序。接口

      排序的两种方式:

             一、元素自身具有比较功能,元素实现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迭代方式获取元素值。