リストMap の リストに要素を追加する時、、

Map<String, List<String>>  map;

結構、頻繁にこういう Key と、List のマップを用意して、Key の存在を確認して
List を新しく生成して、put したり、マップから取得して add して
再びマップに put するのを記述するのは、いつもなんとかならないかと思ってました。

そこで、以下の List に add して List を返す UnaryOperator を用意します。

public static <T> UnaryOperator<List<T>> listAddReturn(T t){
   return l->{
      l.add(t);
      return l;
   };
}
Map<String, List<String>> map = new HashMap<>();

map.put("a", Optional.ofNullable(map.get("a"))
   .map(list->listAddReturn("A").apply(list))
   .orElse(listAddReturn("A").apply(new ArrayList<String>()))
);
map.put("a", Optional.ofNullable(map.get("a"))
      .map(list->listAddReturn("B").apply(list))
      .orElse(listAddReturn("B").apply(new ArrayList<String>()))
);
System.out.println(map);

結果

{a=[A, B]}