🐕

プログラミング自主学習 DAY70 Unmodifiable Collection

2023/08/05に公開

Unmodifiable Collection

一度、インスタンス化されれば、修正できないCollectionを意味する。
修正できないCollectionを生成する方法は、二つある。

  1. オブジェクトを生成時、of() メッソドを活用する。
List<E> immutableList = List.of(E elements);
Set<E> immutableSet = Set.of(E elements);
Map<K,V> immutableKey = Map.of(K k1, V v1, K k2, V v2, ...)
  1. copyOf(Collection col)
    既存のコレクションを copyOf メソッドでコピーする。
List<E> immutableList = List.copyOf(Collection<E> coll);
Set<E> immutableSet = Set.copyOf(Collection<E> coll);
Map<K,V> immutableKey = Map.copyOf(Map<K,V> map);
  1. 既存の配列をArrayListに作成する。(asList メソッド)
String[] arr = {"A","B","C"};
List<String> immutableList = Arrays.asList(arr);
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class ImutableExample {
public static void main(String[] args) {
		
    List<String> immutableList1 = List.of("A","B","C");
    //immutableList1.add("D"); UnsupportedOperationException
		
    Set <String> immutableSet1 = Set.of("A","B","C");
    //immutableSet1.remove("A");
		
    Map<Integer, String> immutableMap1 = Map.of(1,"A",2,"B",3,"C");
    //immutableMap1.put(4, "D");
		
    List<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    List<String> immutalbeList2 = List.copyOf(list);
		
    Set<String> set = new HashSet<>();
    list.add("A");
    list.add("B");
    list.add("C");
    Set<String> immutalbeSet2 = Set.copyOf(set);
		
    Map<Integer,String> map = new HashMap<>();
    map.put(1, "A");
    map.put(2, "B");
    map.put(3, "C");
    Map<Integer,String> immutalbeMap3 = Map.copyOf(map);
		
    String[] arr = {"A","B","C"};
    List<String> immutableList3 = Arrays.asList(arr);
    }
}

Discussion