Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - 集合工廠方法



集合的工廠方法

在 Java 9 中,集合得到了增強,增加了一些新的方法來以簡單且簡潔的方式建立不可變列表。這些新的工廠方法被新增到ListSetMap介面中,用於建立不可變例項。這些工廠方法主要是為了以更簡潔的方式建立集合而提供的便利工廠方法。

語法

在 Java 9 之前,使用以下語法建立不可變列表。

List unmodifiableList = Collections.unmodifiableList(arrayList);

其中 arrayList 是一個可變列表例項。因此,我們需要建立一個列表,然後使用unmodifiableList()從該列表中獲取一個不可變例項,我們無法從該例項中新增/刪除元素。

List 介面的工廠方法

現在從 Java 9 開始,可以使用以下方法建立不可變列表。

static <E> List<E> of();
static <E> List<E> of(E e1);
static <E> List<E> of(E... elements)
static <E> List<E> of(E e1, E e2);
static <E> List<E> of(E e1, E e2, E e3);
static <E> List<E> of(E e1, E e2, E e3, E e4);
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5);
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6);
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7);
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8);
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8,E e9);
static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8,E e9, E e10);

語法

因此,從 Java 9 開始,可以使用以下語法建立不可變列表。of(E... elements) 方法可用於在不可變列表中擁有超過 10 個元素。

List<String> unmodifiableList = List.of("A", "B", "C");

Java 9 之前 List 介面工廠方法的示例

在這裡,我們在 Java 9 之前建立了不可修改的列表。

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Tester {
   public static void main(String[] args) {
      List<String> list = new ArrayList<>();

      list.add("A");
      list.add("B");
      list.add("C");
      list = Collections.unmodifiableList(list);
      System.out.println(list);
   }  
}

讓我們編譯並執行上述程式,這將產生以下結果 -

[A, B, C]

Java 9 中 List 介面工廠方法的示例

在這裡,我們在 Java 9 中建立了不可修改的列表。

package com.tutorialspoint;

import java.util.List;

public class Tester {
   public static void main(String[] args){
	   List<String> list =  List.of("A","B","C");
	   System.out.println(list);
   }  
}

讓我們編譯並執行上述程式,這將產生以下結果 -

[A, B, C]

Set 介面的工廠方法

類似地,Set 介面也包含這些新方法來建立不可修改的 Set,以獲取一個無法新增/刪除元素的 Set 例項。

static <E> Set<E> of();
static <E> Set<E> of(E e1);
static <E> Set<E> of(E... elements)
static <E> Set<E> of(E e1, E e2);
static <E> Set<E> of(E e1, E e2, E e3);
static <E> Set<E> of(E e1, E e2, E e3, E e4);
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5);
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6);
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7);
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8);
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8,E e9);
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8,E e9, E e10);

語法

因此,從 Java 9 開始,可以使用以下語法建立不可變集合。of(E... elements) 方法可用於在不可變集合中擁有超過 10 個元素。

Set<String> unmodifiableSet = Set.of("A", "B", "C");

Java 9 之前 Set 介面工廠方法的示例

在這裡,我們在 Java 9 之前建立了不可修改的集合。

package com.tutorialspoint;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class Tester {
   public static void main(String[] args){
      Set<String> set = new HashSet<>();
      set.add("A");
      set.add("B");
      set.add("C");
      set = Collections.unmodifiableSet(set);
      System.out.println(set);
   }  
}

讓我們編譯並執行上述程式,這將產生以下結果 -

[A, B, C]

Java 9 中 Set 介面工廠方法的示例

在這裡,我們在 Java 9 中建立了不可修改的集合。

package com.tutorialspoint;

import java.util.Set;

public class Tester {
   public static void main(String[] args){
	   Set<String> set =  Set.of("A","B","C");
	   System.out.println(set);
   }  
}

讓我們編譯並執行上述程式,這將產生以下結果 -

[A, B, C]

Map 介面的工廠方法

對於 Map 介面,我們可以使用 ofEntries(...) 來接受 var args 引數,而不是像下面所示的 of() 方法。

static <K,V> Map<K,V> of();
static <K,V> Map<K,V> of(K k1, V v1);
static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8,K k9, V v9);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8,K k9, V v9, K k1, V v10);

因此,從 Java 9 開始,可以使用以下語法建立不可變對映。

Map<String, String> unmodifiableMap = Map.of("A","Apple", "B", "Boy", "C", "Cat");

Java 9 之前 Map 介面工廠方法的示例

在這裡,我們在 Java 9 之前建立了不可修改的 Map。

package com.tutorialspoint;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class Tester {
   public static void main(String[] args){
      Map<String, String> map = new HashMap<>();

      map.put("A","Apple");
      map.put("B","Boy");
      map.put("C","Cat");
      map = Collections.unmodifiableMap(map);
      System.out.println(map);
   }  
}

讓我們編譯並執行上述程式,這將產生以下結果 -

{A=Apple, B=Boy, C=Cat}

Java 9 中 Map 介面工廠方法的示例

在這裡,我們在 Java 9 中建立了不可修改的 Map。

package com.tutorialspoint;

import java.util.Map;

public class Tester {
   public static void main(String[] args){
      Map<String, String> map = Map.of("A","Apple","B","Boy","C","Cat");
      System.out.println(map);
   }  
}

讓我們編譯並執行上述程式,這將產生以下結果 -

{C=Cat, A=Apple, B=Boy}
廣告