關鍵區別-列表與集合
大多數編程語言使用數組來存儲一組相同類型的數據。數組的一個主要缺點是,一旦聲明瞭數組大小,就不能修改它。如果程序員想存儲一個超過數組大小的值,那麼他應該創建一個新數組,並將現有元素複製到新數組中。在這些情況下,可以使用集合。在集合的支持下,可以添加元素、刪除元素和許多其他操作。在Java等編程語言中有不同類型的集合。List和Set是集合層次結構的接口。其他接口的基本接口是Collection。List和Set的關鍵區別在於List支持多次存儲同一個元素,Set不支持多次存儲同一個元素。因此,集合不允許重複。
目錄
1. 概述和主要區別
2. 什麼是列表
3.設置了什麼
4. 列表與集合的相似性
5. 並列比較-以表格形式列出與設置
6. 摘要
什麼是列表(list)?
列表是擴展集合接口的接口。集合接口中有許多方法。add方法有助於添加元素。“remove方法”是刪除元素。“addAll method”用於添加多個元素,而“removeAll method”用於從集合中移除元素。contains方法有助於查找列表中是否存在特定對象。“containsAll”用於查找集合中是否存在一組對象。iterator方法用於循環遍歷列表中的項。由於List擴展了Collection,所以所有的Collection方法都屬於List。除了這些方法之外,列表還有get和set等方法。程序員可以使用get方法在特定索引處獲取值。程序員可以使用set方法在特定索引處設置值。“indexOf”用於查找元素的索引。
在列表中,可以根據位置執行操作。程序員可以提供要添加到索引中的數據元素。所以它會被添加到具體的索引中。如果程序員沒有給出索引,元素將被添加到列表的末尾。它還保持**的順序。如果添加了元素1,然後添加了元素2,那麼元素1將位於元素2之前。
ArrayList,LinkedList,Vector是一些實現List的類。在ArrayList中,訪問元素的速度很快,但**和刪除速度較低。ArrayList不是線程安全的。從多個線程訪問同一個ArrayList可能不會得到相同的結果。在LinkedList中,元素同時鏈接到backward和forward。使用LinkedList**和刪除元素比ArrayList快。LinkedList實現列表和隊列。Vector類似於ArrayList,但它是安全的,因為所有方法都是同步的。
什麼是設置(set)?
Set是擴展集合接口的接口。由於Set接口擴展了Collection,所以所有的Collection方法也都屬於Set。集合不支持重複值。因此,程序員不能將同一個元素存儲兩次。它維護一組獨特的元素。SortedSet接口擴展了Set接口。SortedSet按排序順序維護元素。NavigableSet接口擴展了SortedSet。NavigableSet提供了導航方法,如lower、floor、天花板等。
HashSet、LinkedHashSet和TreeSet是一些實現Set接口的類。HashSet實現Set接口。它不保持**的順序。如果值以a,x,b的形式**,它可能存儲為,x,a,b。LinkedSet保持**順序。如果元素以a,x,b的順序**,則存儲順序為a,x,b。樹集實現Set和NavigableSet。它不保持**的順序,但按排序的順序存儲元素。如果**的順序是a、c、b,那麼元素將被存儲為a、b、c。所有HashSet、LinkedHashSet和TreeSet都不會有任何重複的元素。
列表(list)和設置(set)的共同點
- 列表和集合接口都擴展了集合接口。
- 列表和集合都支持添加、刪除元素等操作。
列表(list)和設置(set)的區別
列表與集合 | |
列表接口是集合的子接口,它包含根據索引執行**、刪除等操作的方法。 | Set Interface是集合的子接口,它包含在維護唯一元素的同時執行**、刪除元素等操作的方法。 |
班級 | |
ArrayList、Vector和LinkedList是實現列表接口的類。 | HashSet、LinkedHashSet和TreeSet是實現Set接口的類。 |
元素複製 | |
列表支持元素的重複。 | 集合不支持元素的重複。元素是獨一無二的。 |
總結 - 列表(list) vs. 設置(set)
集合用於動態存儲元素。Java等編程語言提供了集合接口。列表和集合是兩個屬於集合接口的接口。兩個接口都擴展了集合。本文討論了列表與集合的區別。List和Set的關鍵區別在於List支持多次存儲同一個元素,Set不支持多次存儲同一個元素。集合始終保持唯一的元素。