Difference between Array List and Linked List
在我們進入實際差異之前,讓我們先瞭解一下它們到底是什麼?
我們在數學中遇到了集合的概念,這裡的集合多少有相同的含義。是的,它是元素的集合,在大多數情況下,是相似元素的集合。您可以嘗試將這些元素新增到集合中,並嘗試列印以瞭解它的實際儲存方式。
輸入一組:20,50,10,30。
它實際上儲存在一個集合中,即10、20、30、50。
元素在這裡排序,並不是按**順序儲存的。這是Set的特性之一,它總是在儲存之前對元素進行排序,當然,也有例外,其中之一就是LinkedhashSet,因為它維護元素的**順序。
在計算機術語中,集合包含很少的附加屬性,例如方法和繼承。方法就像函式一樣,它們執行某些任務,例如新增、刪除或遍歷元素集。我們大多數人都知道“繼承”這個詞,這裡的意思也是一樣的。是的,我們可以從它的集合中繼承一個方法,這樣它就可以與Set介面一起使用。我們再次討論一個新的術語,即集合介面,它只不過是包括方法在內的整個元素集合。
為了更好地理解,我們用它的語法表示了一個集合。從下麵的語法中,您可以識別不同型別的集合,例如HashSet和TreeSet。
import java.util.*;
public class Setexample {
public static void main(String args[]) {
int count[] = {34, 22,10,60,30,22}{25, 17, 76, 12, 88, 57};
Set<Integer> set = new HashSet<Integer>();
try {
for(int i = 0; i < 5; i++) {
set.add(count[i]);
}
System.out.println(set);
TreeSet sortedSeteg = new TreeSet<Integer>(set);
System.out.println(“Here we have the sorted output:”);
System.out.println(sortedSeteg);
System.out.println(“Look at the First element: “+ (Integer)sortedSet.first());
System.out.println(“Look at the last element: “+ (Integer)sortedSet.last());
}
catch(Exception e) {}
}
}
以上程式碼的輸出如下。
[25, 17, 76, 12, 88] Here we have the sorted output: [12, 17, 25, 76, 88] Look at the First element: 12 Look at the last element: 88
列表擴充套件集合的方式與集合類似,但它保持**順序。您可以嘗試將以下名稱新增到列表中,並檢視如何將其新增到列表中。
輸入一個列表:約翰,南希,瑪麗,愛麗絲。
如何儲存在列表中:約翰、南希、瑪麗、愛麗絲。
請註意它們的**順序。您可以確定“John”是輸入和輸出中的第一個元素,後面跟名稱的**順序相同。我們甚至可以認為這是列表的主要屬性之一。
讓我們看看下麵語法中的一些List方法,比如ArrayList和LinkedList。
import java.util.*; public class Collecti***sample {
public static void main(String[] args) {
List a1 = new ArrayList(); a1.add(“John”); a1.add(“Nancy”); a1.add(“Mary”); a1.add(“Alice”); System.out.println(” ArrayList Elements are”); System.out.print(“\t” + a1);
List l1 = new LinkedList(); l1.add(“Silvia”); l1.add(“Arjun”); l1.add(“Deepika”); l1.add(“Susan”); System.out.println(); System.out.println(” LinkedList Elements are”); System.out.print(“\t” + l1); }}
以上語法的輸出如下。
ArrayList Elements are
[John, Nancy, Mary, Alice]
LinkedList Elements
[Silvia, Arjun, Deepika, Susan]
從上面的程式碼可以清楚地看出,ArrayList和LinkedList都保持**順序。
集合和列表有自己的方法,下麵讓我們來看看其中的幾個。
序號 | 集合–方法 | 列表–方法 |
1. | add()–將物件新增到集合中。 | void add(int index,Object obj)–它將物件“obj”新增到呼叫列表的指定“index”處,並確保不會透過移動前面的元素來覆蓋任何元素。 |
2. | clear()–從集合中移除物件。 | boolean addAll(int index,Collection c)–它將整個集合“c”新增到呼叫列表和指定的“index”處。它還確保不覆蓋任何元素。我們還可以透過檢查返回值來檢查其操作的正確性。如果更改成功,則返回“true”,否則返回值“false”。 |
3. | contains()–檢查集合中是否包含某個物件。如果物件存在於集合中,則返回值“true”。 | Object get(int index)–返回指定“index”處的元素或物件。 |
4. | isEmpty()–確定集合中沒有元素時是否有幫助。如果沒有元素,則返回值“true”。 | int lastIndexOf(Object obj)–其工作原理與indexOf()方法的相反。它返回指定物件“obj”的最後一次出現,如果列表中沒有此類物件,則返回值“1”。因此,它也可以用作Set介面的contains()方法。 |
6. | remove()–透過將元素指定為方法的引數,從集合中移除元素。 | ListIterator ListIterator()–它返回列表起始索引的迭代器。 |
7. | size()–計算集合中物件或元素的數量。 | ListIterator ListIterator(int index)–它有助於從指定的“index”開始遍歷呼叫列表。 |
8. | – | objectremove(int index)–它刪除指定“index”處的物件,並返回已刪除的元素作為結果。它還減少結果列表索引以反映刪除。 |
9 | – | 物件集(int index,Object obj)–將物件“obj”分配給指定“index”處的呼叫列表。 |
10 | – | List subList(int start,int end)–在呼叫該方法的列表中包含從索引“start”到索引“end”的物件。 |
集合從不保持元素**到集合中的順序,而列表則保持該順序。LinkedHashSet有一個例外,因為它維護**順序,但另一個集合(如HashSet和TreeSet)在儲存元素之前對元素進行排序。下麵舉例說明。
設定輸入:貓,娃娃,蘋果。
儲存為:蘋果,貓,娃娃。
列表輸入:貓,娃娃,蘋果。
儲存為:貓,娃娃,蘋果。
集合不允許重覆,而列表允許重覆。如果必須將重覆值新增到列表中,則該值將被覆蓋。檢視樣本中的集合和列表重覆項。
設定輸入:10,20,20,50。
儲存為:10、20、50。
列表輸入:10,20,20,50。
儲存為:10、20、20、50。
一個集合只能有一個空值,而一個列表可以有多個空值,並且不限於任何數字。
設定輸入:空,空,人,狗,飛機。
儲存為:空,狗,人,飛機。
列表輸入:null,null,Man,Dog,Plane。
儲存為:空,空,人,狗,飛機。
迭代器方法可以很好地處理Set和List,而ListIterator方法只能處理List。ListIterator可用於向前或向後遍歷列表。
集合沒有遺留類,而列表介面有一個稱為“vector”的遺留類。向量使用列表介面,因此保持**順序。由於同步的努力,向量在新增、刪除和更新方面的效能稍慢。
集合實現中很少有HashSet、LinkedHashSet和TreeSet。List的實現很少包括ArrayList和LinkedList。
Set和List的用法完全取決於**順序的維護要求。正如我們瞭解到的,集合從不保持**的順序,當順序不太重要時,可以使用它。同樣,在需要保持**順序時,也可以使用列表。
序號 | 差異 | 套 | 列表 |
1. | **順序 | 它保持**順序。第一個**的值保留在第一位,依此類推,而不考慮其值。 | 它從不保持**順序。 |
2. | 方法 | 它使用add()、clear()、contains()、isEmpty()、remove()和size()等方法。 | 它使用add()、addAll()、get()、lastIndexOf()、ListIterator()和remove()、set()以及subList()等方法。 |
3. | 複製品 | 它從不允許重覆,在這種情況下,值會被覆蓋。 | 它允許複製。 |
4. | 空值 | 它最多隻能有一個空值。 | 它可以有任意數量的空值。 |
5. | 迭代器()和listIterator()的使用 | 它只使用iterator()方法。 | 它同時使用iterator()和listIterator()。 |
6. | 遺留類的存在 | 沒有遺留類。 | 它有一個稱為向量的遺留類。 |
7. | 啟動位置 | 集合介面實現中很少有HashSet、LinkedHashSet和Tree Set。 | 列表介面實現中很少有LinkedList和ArrayList。 |
希望,我們已經包括了佈景和單子之間所有可能的差異。如果您覺得我們遺漏了什麼,請務必告訴我們。
...果表。 聯盟(union)和sqlserver中的union all(union all in sql server)的區別 Union是一個SQL命令,它組合兩個或多個select語句的結果,而不返回任何重複的行。Union All是一個SQL命令,它組合了兩個或多個select語句的結果,包括重複的行。這是...
...eSet和HashSet都不維護**的順序。 樹集(treeset)和容器(hashset)的區別 樹集與雜湊集 TreeSet是集合層次結構中的一個類,用於按升序儲存唯一元素。 HashSet是集合層次結構中的一個類,用於使用雜湊機制儲存唯一元素。 元...
...許儲存、更新、檢索元素集。它有助於處理資料結構,如列表、集合、樹和地圖。列表是集合框架的一個介面。ArrayList和LinkedList是collecti***框架中的兩個類。它們實現了集合介面和列表介面。本文討論ArrayList和LinkedList之間的區...
...令是set、add、append等。“set”命令用於為新的或現有的鍵設定一個新值。“add”命令用於為新鍵設定值。“replace”命令用於替換現有鍵的值。“append”命令可以向現有鍵新增一些資料。“get”、“delete”是檢索命令。“get”命...
樹集(treeset)和樹狀圖(treemap)的區別 陣列用於儲存一組相同型別的資料元素。大多數程式語言都支援陣列。即使一個數組可以儲存多個值,它也有一個主要的缺點。陣列一旦建立,就不可能更改它。如果程式設計師聲明瞭一個...
列表(list)和元組(tuple)的區別 Python是一種通用的高階程式語言。它很容易閱讀和學習。因此,它是初學者開始計算機程式設計的通用語言。Python程式易於測試和除錯。它是一種用來構建各種應用程式的語言。其中一些是機器學...
...用者在另一端解碼和觀看。 什麼是機頂盒(a set-top box)? 設定盒是一種接收數字訊號、解碼並在電視顯示器上顯示的裝置。接收到的訊號可以是電視訊號或因特網資料訊號。訊號可以透過電纜或電話連線接收。過去,機頂盒主要...
...在除法演算法中,a是被除數,b是除數。 除數和被除數的區別是什麼?•股息是被除以的數字。被除數的除數叫做除數。•除數可以是任何實數,而除數應該是非零。 img.centered,.aligncenter{display:block;margin:0 auto 24px}.gallery-cap...
...視裝置的電源,等待主螢幕顯示。 導航到設定選單(齒輪圖示)。 向下滾動到General Settings(常規設定)子部分,然後選擇Apps(應用)。 選擇“檢視所有應用”。 將顯...
... 下面是典型Windows命令中使用的大多數命令的綜合列表。你可以在這裡下載PDF版本。向下滾動到下面的基本命令列表,以獲得可立即使用的命令列表。 ...