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 而且他们所有集合都有一个迭代器的方法进行迭代。