list,set,map的區別
list與set是存儲單列數據的集合,而map是存儲雙列數據的集合。
List是有序的,可重複,分爲ArrayList,Vector,LinkedList
Set 是無序的,不可重複,分爲HashSet,TreeSet
Map 是<鍵,值>對存儲,鍵不可重複,值可重複,分爲HashMap,TreeMap
HashSet底層用的HashMap。
TreeSet底層用的TreeMap。
List系列對比
ArrayList與Vector是數組結構,線程安全,查改快,增刪慢。
LinkedList是鏈表結構,線程不安全,查改慢,增刪快。
Set系列對比
HashSet去重複,但不排序。使用hashCode()與equals()方法。先判定hashCode是否相同,若不同,則存儲,若相同,再通過equals()方法進行比較,返回false,則存儲,返回true,則不存。
TreeSet去重複,也可排序。使用的是二分法,通過接口Comparable與Comparator,通過CompareTo()與Compare方法進行比較。若希望保存重複的值並排序,則使用匿名內部類的方法,重寫Comparator中的Compare()方法。
Map系列對比
HashMap可存儲空的鍵值對,線程不安全
HashTable不可以存儲空的鍵值對,線程安全