В моих проектах Java 21+ у меня часто есть объекты с несколькими уникальными картами ключей, которые я храню в картах с несколькими ключами, как показано ниже. Как создать многоключевую карту с помощью сборщика потоков?
Например:
// id and symbol are guaranteed unique
record Foo(int id, String symbol) {};
затем я создаю карту с несколькими ключами:
var fooA = new Foo(1, "A");
var fooB = new Foo(2, "B");
var fooList = List.of(fooA, fooB);
var fooMap = new HashMap();
for (var foo : fooList) {
fooMap.put(foo.id(), foo);
fooMap.put(foo.symbol(), foo);
}
assertThat(fooMap.get(1)).isEqualTo(fooA);
assertThat(fooMap.get("A")).isEqualTo(fooA);
assertThat(fooMap.get(2)).isEqualTo(fooB);
assertThat(fooMap.get("B")).isEqualTo(fooB);
Что такое эквивалент сборщика потоков? Что-то вроде:
var fooMap = fooList.stream().collect(Collectors.flatMapping(???...));
Подробнее здесь: https://stackoverflow.com/questions/798 ... -collector