あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

immutable コレクション

Google の guava-libraries の 不変(immutable)なコレクション。
普通に HashMap 等を使うほうが簡単だがオブジェクトの状態が変わらないので、
状態に依存しないコレクション操作ができて、状態の変化によるバグを防止できる。
複数のオブジェクトで同じコレクションを使って操作を行う場合に有効

import com.google.common.collect.ImmutableMap;
..
  private final Map<Integer,String> map = ImmutableMap.of(1, "txt", 2, "bin");

既存のImmutableMap のインスタンスにデータを追加する場合は builder を使って
新たな ImmutableMap を生成する。

..
  final Builder<Integer,String> b = map.builder();
  final Map<Integer,String> other_map = b.put(3, "csv").put(4, "java").build();
..

他に ImmutableList, ImmutableSet もある。