Hallo. Ich versuche gerade, die adder-Funktion zu vereinfachen... Könnte mir dabei bitte jemand behilflich sein?
Java:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
public class MyCollection {
private record Elem(int i, int j, String s) {
}
private static final HashMap<Integer, HashMap<Integer, ArrayList<String>>> map = new HashMap<>();
private static final Function<Elem, ArrayList<String>> adder = e -> {
if (map.containsKey(e.i)) {
var map2 = map.get(e.i);
if (map2.containsKey(e.j)) {
var list = map2.get(e.j);
list.add(e.s);
return list;
}
var list = new ArrayList<>(List.of(e.s));
map2.put(e.j, list);
return list;
}
var list = new ArrayList<>(List.of(e.s));
map.put(e.i, new HashMap<>(Map.of(e.j, list)));
return list;
};
public static void main(String[] args) {
var e = new Elem(1, 2, "Hello");
System.out.println(adder.apply(e));
System.out.println(adder.apply(e));
e = new Elem(2, 1, "World");
System.out.println(adder.apply(e));
System.out.println(adder.apply(e));
e = new Elem(1, 2, "!");
System.out.println(adder.apply(e));
System.out.println(map);
}
}