Java集合面試題(02) Java中List和Set之間區別
阿新 • • 發佈:2019-01-30
本文為本博主翻譯,未經允許,嚴禁轉載!
簡介
Java中List和Set之間有什麼區別是一個非常流行的Java集合面試問題,也是在Java中使用Collection類時要記住的一個重要的基本概念。 List和Set都是Java程式最重要的Collection類中的兩個,以及各種Map實現。 List和Set的基本特徵在Java的List和Set介面中被抽象出來,然後List和Set的各種實現都在相應介面之上增加了特定的特徵。例如,Java中的ArrayList是由Array支援的List實現,而LinkedList是另一個像連結列表資料結構一樣工作的List實現。在這個Java教程中,我們將看到List和Set集合之間的一些根本區別。由於List和Set在Java5泛型的引入中被泛化,所以這些差別同樣適用於List和Set。
Java中List vs Set
在Java中,關於List和Set, 這裡有幾個值得注意的差異。請記住,它們都用於儲存物件,並提供方便的API來插入,刪除和檢索元素,以及支援迭代。1)List和Set在Java中的基本區別是允許重複的元素。 Java中的列表允許重複,而Set不允許任何重複。如果您在Set中插入重複項,則會替換舊值。 Java中Set的任何實現都只包含唯一的元素。
2)List和Set之間的另一個顯著的差異是順序。列表是有序集合,而集合是無序集合。列表維護元素的插入順序,意味著之前插入的任何元素都會比之後插入的任何元素的索引要小。在Java中Set不保持任何順序。儘管Set提供了另一個稱為SortedSet的替代方法,它可以按照Set中儲存的Object的Comparable和Comparator方法定義的特定排序順序儲存Set元素。
3)Set使用equals()方法來檢查儲存在Set中的元素的唯一性,而SortedSet使用compareTo()方法來實現元素的自然排序順序。為了使元素在Set和SortedSet中正常工作,equals和compareTo必須相互一致。
4)Java中List介面的流行實現包括ArrayList,Vector和LinkedList。 Set介面的流行實現包括HashSet,TreeSet和LinkedHashSet。
Java中使用List和Set
重要的一點是List和Set都是從Collection介面派生的。簡而言之,List和Set之間在Java中的主要區別在於List是一個允許重複的有序集合,而Set是一個不允許重複的無序集合。