Java 9コレクションファクトリメソッド:不変List、Set、Mapを簡潔に作成
Java 9では、List、Set、Mapインターフェースに不変インスタンスを作成する新しいファクトリメソッドが追加されました。これらのファクトリメソッドは、コレクションをより冗長でない簡潔な方法で作成するための便利なメソッドです。
従来のコレクション作成方法
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
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);
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list = Collections.unmodifiableList(list);
System.out.println(list);
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, B, C]
[A, B, C]
{A=Apple, B=Boy, C=Cat}
新しいメソッド
Java 9で以下のメソッドがList、Set、Mapインターフェースに追加されました(オーバーロード含む)。
static <E> List<E> of(E e1, E e2, E e3); static <E> Set<E> of(E e1, E e2, E e3); 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> ofEntries(Map.Entry<? extends K,? extends V>... entries)
注意点
ListとSetのof(...)メソッドは0〜10パラメータまでオーバーロードされ、可変長引数版もあるMapのof(...)メソッドは0〜10パラメータまでオーバーロードMapで10パラメータ以上の場合はofEntries(...)メソッドで可変長引数を使用
新しいコレクション作成方法
import java.util.*;
public class Tester {
public static void main(String[] args) {
Set<String> set = Set.of("A", "B", "C");
System.out.println(set);
List<String> list = List.of("A", "B", "C");
System.out.println(list);
Map<String, String> map = Map.of("A","Apple","B","Boy","C","Cat");
System.out.println(map);
Map<String, String> map1 = Map.ofEntries(
new AbstractMap.SimpleEntry<>("A","Apple"),
new AbstractMap.SimpleEntry<>("B","Boy"),
new AbstractMap.SimpleEntry<>("C","Cat"));
System.out.println(map1);
}
}
出力
[A, B, C]
[A, B, C]
{A=Apple, B=Boy, C=Cat}
{A=Apple, B=Boy, C=Cat}
Java
- Java演算子をマスター:種類、構文、実践例
- Java抽象クラスとメソッド:包括的ガイド
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaオートボクシングとアンボクシング完全ガイド:実例とベストプラクティス
- Java String toLowerCase() & toUpperCase():ロケール対応テキストケース変換
- Javaコレクションフレームワーク完全ガイド: インターフェース・実装クラス・アルゴリズム・イテレータ・Comparator
- Java 10の新API 70以上を解説:不変コレクション、Optional改善など
- Java 10のガベージコレクターインターフェースとG1並列フルGCでメモリ管理を効率化
- Java 9コレクションファクトリメソッド:不変List、Set、Mapを簡潔に作成