すっきりさせて分かりにくくする
考えてみたら、unmodifiableMap
に渡すのは、
Map
であって配列ではないのだから、
new HashMap<>()
で明示的に作成するまでもない。
最初のソースをunmodifiableMap
用に少し変えるだけでいいのだった。
import java.util.Collections; import java.util.List; import java.util.Map; ...snip entry(202, "breakpoint") ); Map<String, Integer> pam = Collections.unmodifiableMap( map.entrySet().stream() .collect( Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey) ) ); System.out.println(map); System.out.println(pam); ...snip
これなら一時変数を閉じ込めるための不自然なブロックも要らない。
効率はimmutableなのより悪いのは仕方ないか。