lagénorhynque 🐬カマイルカ
(defprofile lagénorhynque
:id@lagenorhynque
:readings ["/laʒenɔʁɛ̃
k/" "ラジェノランク"]
:aliases ["カマイルカ" "🐬"]
:languages [Java Japanese ; native languages
Clojure Haskell ; functional languages
English français] ; European languages
:interests [programming
language-learning
law politics
mathematics])
Java: サンプルデータ
jshell> recordEntity(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> finalvar 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 varresult = 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}