Java中List、Set和Map的區別


Java 有一個 java.util 包,其中包含一個 Collection 介面。此介面有許多子介面和類,例如 ListSetMap。在本文中,我們將學習 List、Set 和 Map 之間的區別。

什麼是List介面?

Java 有一個 Collection 介面,List 是 Collection 的子介面。此介面包含插入、更新、刪除和搜尋等方法。開發人員也可以插入空元素。

List介面示例

List 介面可以在 java.util 包中找到。下面是一個 List 的示例:

import java.util.*;
public class ListExample {
   public static void main (String args[]) {
      List<String> mylist = new ArrayList<>();
      mylist.add("James Bond");
      mylist.add("Superman");
      mylist.add("Spiderman");
      for(String superhero : mylist)
         System.out.println(superhero);
   }
}

輸出

James Bond
Superman
Spiderman

什麼是Set介面?

Set 是一個擴充套件 Collection 介面的介面。它在 java.util 包中可用。這是一個介面,其中重複項不被考慮,在列印輸出時將被忽略。

Set介面示例

這是一個 Set 介面的簡單示例。

import java.util.*;
public class MySet {
   public static void main (String args[]) {
      Set<String> setmyalp = new HashSet<String>();
      setmyalp.add("A");
      setmyalp.add("B");
      setmyalp.add("C");
      setmyalp.add("D");
      setmyalp.add("E");
      System.out.println(setmyalp);
   }
}

輸出

[A, B, C, D, E]

什麼是Map介面?

Map 是一個可以在 java.util 包中找到的介面。這是一個用於將鍵與值匹配的介面。在 Map 介面中儲存鍵和值後,使用者只需使用鍵即可獲取其值。

Map介面示例

這是一個使用 Map 介面的示例。

import java.util.*;
public class MyMap {
   public static void main (String args[]) {
      Map<String, String> mapvalue =new HashMap<String, String>();
      mapvalue.put("Fruit" , "Apple");
      mapvalue.put("Vegetable" , "Potato");
      mapvalue.put("Nut" , "Groundnut");
      for(Map.Entry me : mapvalue.entrySet()) {
         System.out.println(me.getKey() + " " + me.getValue());
      }
   }
}

輸出

Fruit Apple
Nut Groundnut
Vegetable Potato

Java中List、Set和Map介面的區別

List、Set 和 Map 介面屬於 java.util 包,它們擴充套件了 Collection 介面。它們之間有一些區別,可以在下表中找到:

List Set Map
List 介面允許重複值。 Set 介面不允許重複值。 Map 介面不允許重複鍵。
List 保持插入順序。 Set 不保持插入順序。 Set 不保持插入順序。
可以向列表中新增任意數量的空值。 Set 只能新增一個空值。 Map 允許單個空鍵,但空值可以是任意數量。
實現 List 介面的類有:
  • ArrayList
  • LinkedList
實現 Set 介面的類有:
  • HashSet
  • LinkedHashSet
  • TreeSet
實現 Map 介面的類有:
  • HashMap
  • HashTable
  • TreeMap

  • ConcurrentHashMap LinkedHashMap
可以透過 List 介面中的 get() 方法從索引中提取元素。 Set 介面中沒有可用於從特定索引檢索元素的 get 方法。 Map 介面中沒有可用於從特定索引檢索元素的 get() 方法。
List 可用於從不同索引檢索元素。 Set 介面可用於建立僅包含唯一值的集合。 Map 可用於以鍵值對的形式儲存資料。
可以使用 ListIterator 遍歷 List。 可以使用 Iterator 遍歷 Set 元素。 可以使用 keyset、value 和 entrySet 遍歷鍵值對。

結論

List、Set 和 Map 介面屬於 java.util 包,它們擴充套件了 Collection 介面。List 允許重複值,並且值的插入是有序的。Set 和 Map 介面不允許重複值,並且插入不是有序的。所有這些介面都用於不同的目的。

關於List、Set和Map的常見問題

1. List、Set 和 Map 介面屬於哪個包?

List、Map 和 Set 介面屬於 java.util 包。它們擴充套件了 Collection 介面。List 和 Set 介面用於新增、刪除或更新元素,而 Map 介面遵循鍵值對。

2. 在所有這些介面中可以插入多少個空值?

可以在 List 介面中插入任意數量的空值,而 Set 只支援一個空值。在 Map 介面中,鍵只能有一個空值,但值可以有任意數量的空值。

3. 哪些類實現了 List 介面?

List 介面可以由以下類實現:

  • ArrayList
  • LinkedList

4. 哪個介面允許插入重複值?

可以在 List 介面中插入重複值,但在 Set 和 Map 介面中則不行。

5. 哪個介面具有 get 方法來檢索特定索引處的元素?

只有 List 介面具有 get() 方法來從特定索引檢索元素。

更新於:2024年7月18日

瀏覽量:1K+

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.