設定(set)和列表(list)的區別

在我們進入實際差異之前,讓我們先瞭解一下它們到底是什麼?...

Difference between Array List and Linked List

在我們進入實際差異之前,讓我們先瞭解一下它們到底是什麼?

什麼是一套(a set)?

我們在數學中遇到了集合的概念,這裡的集合多少有相同的含義。是的,它是元素的集合,在大多數情況下,是相似元素的集合。您可以嘗試將這些元素新增到集合中,並嘗試列印以瞭解它的實際儲存方式。

輸入一組: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

什麼是列表(list)?

列表擴充套件集合的方式與集合類似,但它保持**順序。您可以嘗試將以下名稱新增到列表中,並檢視如何將其新增到列表中。

輸入一個列表:約翰,南希,瑪麗,愛麗絲。

如何儲存在列表中:約翰、南希、瑪麗、愛麗絲。

請註意它們的**順序。您可以確定“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。

何時使用集合列表(&L)?

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。

希望,我們已經包括了佈景和單子之間所有可能的差異。如果您覺得我們遺漏了什麼,請務必告訴我們。

  • 發表於 2021-06-25 00:15
  • 閱讀 ( 24 )
  • 分類:科技

你可能感興趣的文章

聯盟(union)和sqlserver中的union all(union all in sql server)的區別

...果表。 聯盟(union)和sqlserver中的union all(union all in sql server)的區別 Union是一個SQL命令,它組合兩個或多個select語句的結果,而不返回任何重複的行。Union All是一個SQL命令,它組合了兩個或多個select語句的結果,包括重複的行。這是...

  • 發佈於 2020-10-18 10:13
  • 閲讀 ( 47 )

樹集(treeset)和容器(hashset)的區別

...eSet和HashSet都不維護**的順序。 樹集(treeset)和容器(hashset)的區別 樹集與雜湊集 TreeSet是集合層次結構中的一個類,用於按升序儲存唯一元素。 HashSet是集合層次結構中的一個類,用於使用雜湊機制儲存唯一元素。 元...

  • 發佈於 2020-10-19 06:21
  • 閲讀 ( 57 )

陣列表(arraylist)和雙鏈表(linkedlist)的區別

...許儲存、更新、檢索元素集。它有助於處理資料結構,如列表、集合、樹和地圖。列表是集合框架的一個介面。ArrayList和LinkedList是collecti***框架中的兩個類。它們實現了集合介面和列表介面。本文討論ArrayList和LinkedList之間的區...

  • 發佈於 2020-10-19 11:43
  • 閲讀 ( 48 )

記憶體快取(memcached)和雷迪斯(redis)的區別

...令是set、add、append等。“set”命令用於為新的或現有的鍵設定一個新值。“add”命令用於為新鍵設定值。“replace”命令用於替換現有鍵的值。“append”命令可以向現有鍵新增一些資料。“get”、“delete”是檢索命令。“get”命...

  • 發佈於 2020-10-19 23:25
  • 閲讀 ( 47 )

樹集(treeset)和樹狀圖(treemap)的區別

樹集(treeset)和樹狀圖(treemap)的區別 陣列用於儲存一組相同型別的資料元素。大多數程式語言都支援陣列。即使一個數組可以儲存多個值,它也有一個主要的缺點。陣列一旦建立,就不可能更改它。如果程式設計師聲明瞭一個...

  • 發佈於 2020-10-24 02:47
  • 閲讀 ( 40 )

列表(list)和元組(tuple)的區別

列表(list)和元組(tuple)的區別 Python是一種通用的高階程式語言。它很容易閱讀和學習。因此,它是初學者開始計算機程式設計的通用語言。Python程式易於測試和除錯。它是一種用來構建各種應用程式的語言。其中一些是機器學...

  • 發佈於 2020-10-24 03:25
  • 閲讀 ( 46 )

機頂盒(set top box)和dth公司(dth)的區別

...用者在另一端解碼和觀看。 什麼是機頂盒(a set-top box)? 設定盒是一種接收數字訊號、解碼並在電視顯示器上顯示的裝置。接收到的訊號可以是電視訊號或因特網資料訊號。訊號可以透過電纜或電話連線接收。過去,機頂盒主要...

  • 發佈於 2020-10-28 00:02
  • 閲讀 ( 58 )

除數(divisor)和股息(dividend)的區別

...在除法演算法中,a是被除數,b是除數。 除數和被除數的區別是什麼?•股息是被除以的數字。被除數的除數叫做除數。•除數可以是任何實數,而除數應該是非零。 img.centered,.aligncenter{display:block;margin:0 auto 24px}.gallery-cap...

  • 發佈於 2020-11-04 12:47
  • 閲讀 ( 68 )

如何為android電視增加更多儲存空間

...視裝置的電源,等待主螢幕顯示。 導航到設定選單(齒輪圖示)。 向下滾動到General Settings(常規設定)子部分,然後選擇Apps(應用)。 選擇“檢視所有應用”。 將顯...

  • 發佈於 2021-03-12 12:42
  • 閲讀 ( 71 )

您應該知道的基本windows cmd命令

... 下面是典型Windows命令中使用的大多數命令的綜合列表。你可以在這裡下載PDF版本。向下滾動到下面的基本命令列表,以獲得可立即使用的命令列表。 ...

  • 發佈於 2021-03-15 18:07
  • 閲讀 ( 45 )
lgqiwgo06764
lgqiwgo06764

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦