24. Java: サンプルデータ
jshell> record Entity(int key, String x) {}
| created record Entity
jshell> final var entities = List.of(
...> new Entity(3, "a"),
...> new Entity(1, "b"),
...> new Entity(2, "c"),
...> new Entity(1, "d"),
...> new Entity(1, "e")
...> )
entities ==> [Entity[key=3, x=a], Entity[key=1, x=b],
Entity[k ... x=d], Entity[key=1, x=e]]
25. Java: 命令型(imperative)のアプローチ
jshell> final var keyToEntities =
...> new HashMap<Integer, List<Entity>>();
...> for (final var e : entities) {
...> final var es = keyToEntities.getOrDefault(e.key(),
...> new ArrayList<Entity>());
...> es.add(e);
...> keyToEntities.put(e.key(), es);
...> }
keyToEntities ==> {}
jshell> keyToEntities
keyToEntities ==> {1=[Entity[key=1, x=b], Entity[key=1, x=d],
Entity[key=1, x=e]], 2=[Entity[key=2, x=c]],
3=[Entity[key=3, x=a]]}
26. jshell> final var result = new HashMap<Integer, Boolean>();
...> for (final var entry : keyToEntities.entrySet()) {
...> result.put(entry.getKey(),
...> entry.getValue().size() > 1);
...> }
result ==> {}
jshell> result
result ==> {1=true, 2=false, 3=false}