java常用集合族谱

Collection

集合Collection常常与Collections来问,其实他们不同,一个是所有集合的父接口(Collection),一个是工具类(Collections)提供一些静态方法。

Collection下的子孙关系如图:

1:List和Set 比较

他们都是继承Collection的子接口,List是有序存数据,底层是通过数组来实现的,这样提供了很好的遍历。Set是单链结构,关注的是存数据的唯一性(通过equal()来比较),无序。

2:Vector和ArrayList比较

他俩功能一样,但是Vector是线程安全的,运用了synchronized修饰,导致性能比ArrayList差。

3:ArrayList和LinkedList

LinkedList底层采用的是双向链表结构存储,适合增加和删除元素。而ArrayList采用的是数组的形势适合遍历元素,增删元素,速度比LinkedList要慢。

4:HashSet和TreeSet

他们都是无序,切元素唯一的。然而HashSet不关注元素的顺序,TreeSet实现Comparator接口,能按照实际顺序排序

5:LinkedHashSet和TreeSet

LinkedHashSet如果想按照插入数据时的顺序遍历出元素,则能采用此集合类。TreeSet是能按照自然顺序去排序。

6:HashMap和HashTable

HashMap是线程不安全的并且key可以为null且唯一 value可以为null ,HashTable是线程安全的,key和value都不允许为null

7:TreeMap和HashMap

HashMap不关注排序,而TreeMap的key实现了Comparator接口所以能实现自然排序,也可以自己在new的时候 重写这个compare()方法从而实现我们想要的顺序

附赠:Map是单独的,不是继承Collection 而且他们所有集合都有一个迭代器的方法进行迭代。

posted @ 2018-01-19 14:34  ^keepHungry$  阅读(967)  评论(0编辑  收藏  举报