여러 키를 매핑 수집 각각의 키를 사용하여 Map<String, Foo>
로 Stream<Foo>
:자바 스트림은 <p></p>가 나는 <code>Foo</code> 인터페이스를 가지고 ... 내가 다음 자바 8 스트림 꽤 잘 받고 있지만, 생각했다
Map<String, Foo> foosByKey = fooStream.collect(
Collectors.toMap(Foo::getKey, Function.identity()));
그러나 나는 Map<Bar, Foo>
로를 수집 할 경우? 즉, 증기에있는 각 Foo
에 대해 Foo.bars()
에 의해 반환 된 Bar
인스턴스의 모든 하나에 키가 입력 된 Foo
을 맵에 넣고 싶습니다. 어디서부터 시작해야합니까?
아니요, 당신은 거꾸로 가지고 있습니다. 'Map'은'Bar'와'Foo' 인스턴스 사이에 일대일 매핑을 암시합니다. 'Map '또는'Map '을 고려해보십시오. 사용자가 여러 신용 카드를 사용할 수 있고 책에 여러 ISBN이있을 수 있습니다. 여기에 복잡한 것은 없습니다. –
나는 그 의미를 이해하지만, 나는 약간 부수적 인 점에 매달 리고 싶지 않았다. 매핑이 양방향인지 여부는 그래프가 방향인지 여부에 따라 다릅니다. Java 'Map'은 단방향이므로 다시 매핑 할 수 없습니다. 예를 들어 구아바에는 'BiMap'이 있습니다. 저는 여러분이 _relationship_이 일대일이라고 말하고 싶다고 생각합니다.이 경우 _relationship_은 many-to-one ('Bar' -'Foo')입니다. 그러나 다시 한번 이것은 요점 옆에 모든 종류의 것입니다 --- 맥주에 대해 토론 할 것들. 요약하면 각'Foo'는'Bar'를 많이 가질 수 있으며'Bar'를'Foo'에 매핑하려고합니다. 건배! –
사실 우리는 각각의 'Foo'가 많은 'Bar'를 가질 수 있고 모든 Bar는 구별되며, [Sotirios의 대답] (http://stackoverflow.com/a/37956805/2711488)에는 적절한 해결책이 들어 있습니다. 당신이 그의 대답을 받아들이지 못하게하는 것이 있습니까? – Holger