整體來看List,Set,Map都是實現了Collection接口的接口。
- 重復性:
- List允許存在重復的元素,也就是說List中可以在不影響現有元素的值及其索引的同時插入新的重復元素。
- Set不允許存在重復的元素,Set集合都不允許插入重復元素。
- Map是一種以鍵值對形式存儲元素的映射類型集合,對Map而言key(鍵)是唯一的,value(值)是可重復的。
- 空值性:
- List允許任意數量的空值。
- Set最多允許一個空值。
- Map只允許出現一個空鍵,但允許任意數量的空值。
- 排序性:
- List保持每個元素的插入順序。
- Set中的元素都是無序的,但某些Set的實現類可以以某種順序對其中的元素進行排序。(PS:LinkedHashSet按照元素的插入順序進行排序。)
- Map與Set一樣對元素驚醒無序存儲,但Map某些實現類也會對元素進行排序。(PS:TreeMap按照鍵對其中的元素進行升序排序,LinkedHashMap按照每個元素的插入順序進行排序)
- 實現類:
- List:ArrayList、LinkedList等等。
- Set:HashSet、LinkedHashSet、TreeSet、SortedSet等等。
- Map:HashMap、TreeMap、WeakHashMap、LinkedMashMap、IdentityHashMap等等。
- 使用場景:
- 如果需要時常根據元素的索引值進行查詢操作,那么List(ArrayList)是一種不錯的選擇。
- 如果你的數據不允許重復的值存在,Set是比較適合的選擇。
- 如果需要保留每個元素的插入順序,那么首選還是List集合。
- 如果你的數據需要進行key-value映射,那么就用Map。
原文引用:JAVA教程