Javaで変更不可なリストを作成する方法について記載します。
目次
変更不可なリストを作成する方法
Javaのバージョンにより使用できるメソッドが異なります。
Collections.unmodifiableList | Java8まではこのメソッドを使用します。 |
List.of | Java9から使用できます。 |
List.copyOf | Java10から使用できます。 |
また、変更不可なリストに対して、追加・更新・削除 を行うと
例外( java.lang.UnsupportedOperationException )が発生します。
1. Collections.unmodifiableList
Java8以下の場合は、このメソッドを使用します。
構文
unmodifiableList( 変更不可にするリスト変数 )
戻り値
変更不可なリスト
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
List<Integer> intList = new ArrayList<>(); intList.add(1); intList.add(2); intList.add(3); //変更不可リストを生成 List<Integer> unmodList = Collections.unmodifiableList(intList); // 追加(例外発生) unmodList.add(4); // java.lang.UnsupportedOperationException // 更新(例外発生) unmodList.set(0, 10); // java.lang.UnsupportedOperationException // 削除(例外発生) unmodList.remove(0); // java.lang.UnsupportedOperationException |
2. List.of
Java9からは、このメソッドが使用できます。
構文
of( リストの値を指定 )
戻り値
変更不可なリスト
実行例
1 2 3 4 5 6 7 8 9 10 11 |
// 変更不可リストを生成 List<Integer> unmodList = List.of(1,2,3); // 追加(例外発生) unmodList.add(4); // java.lang.UnsupportedOperationException // 更新(例外発生) unmodList.set(0, 10); // java.lang.UnsupportedOperationException // 削除(例外発生) unmodList.remove(0); // java.lang.UnsupportedOperationException |
3. List.copyOf
Java10からは、このメソッドが使用できます。
構文
copyOf( 変更不可にするリスト変数 )
戻り値
変更不可なリスト
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
List<Integer> intList = new ArrayList<>(); intList.add(1); intList.add(2); intList.add(3); // 変更不可リストを生成 List<Integer> unmodList = List.copyOf(intList); // 追加(例外発生) unmodList.add(4); // java.lang.UnsupportedOperationException // 更新(例外発生) unmodList.set(0, 10); // java.lang.UnsupportedOperationException // 削除(例外発生) unmodList.remove(0); // java.lang.UnsupportedOperationException |