List VS Set
List 是有序的可重复的, Set 是无序的不可重复的。
ArrayList VS LinkList
ArrayList : 底层实现是数组,所以易查询难存储,原因是当往数组中存入某个值后,数组下表将重新排列
LinkList : 底层实现是链表方式 ,适合增删不适合查询。
HashMap VS HashTable
HashMap : 非线程安全,可以存入null key 或者 null Value 如果获取值为null时,就不知道是没有该键还是value 为null,所以需要 containsKey() 来判断
HashTable: 线程安全(因为他的每一个方法都使用了 (Synchronize修饰源码可以看到)不过该方法已经不适用了。如果需要同步请使用 ConcurrentHashMap (它使用的分段锁)
HashSe VS TreeSet VS LinkedHashSet
①.需要速度快的集合,使用HashSet
②.需要集合有排序功能,使用TreeSet
③.需要按照插入的顺序存储集合,使用LinkedHashSet