znalazłem się chcąc wariant Collectors.toMap
która zwraca ImmutableMap
tak, że mogę zrobić:Java - Czy są jakieś Stream Collectors, które zwracają ImmutableMap?
ImmutableMap result = list.stream().collect(MyCollectors.toImmutableMap(
tuple -> tuple._1(), tuple -> tuple._2());
(gdzie tuple
w tym konkretnym przypadku jest Scala Tuple2
)
mam just learned że takie metoda będzie pochodzić z obsługą Java-8 w Guava 21 (yay!), ale to brzmi dobrze przez 6 miesięcy. Czy ktokolwiek wie o istniejących bibliotekach (itp.), Które mogą to dzisiaj wprowadzić?
ImmutableMap
nie jest ściśle wymagane, ale wydaje się najlepszym wyborem, ponieważ wymaga: wyszukiwanie według klucza i zachowywanie oryginalnego zamówienia iteracyjnego. Niezmienność jest zawsze preferowana.
Uwaga: FluentIterable.toMap(Function)
jest niewystarczająca, ponieważ potrzebuję zarówno funkcji mapowania klawiszy, jak i funkcji odwzorowania wartości.
Jestem zaskoczony, że nic nie widziałem w Internecie. Wyszukiwanie "guava kolektora java 8" w popularnej wyszukiwarce zwraca wiele bezpośrednio użytecznych kodów, w tym wyniki bezpośrednio w projektach Guava (jako problemy). –
W tym celu udostępniliśmy 'collectingAndThen()'. –
Odpowiedzi na pytanie dotyczące "ImmutableMultimap" rzeczywiście odpowiadają na moje bezpośrednie pytania. Jednak żadne z tych rozwiązań, które znalazłem w Internecie, nie zawiera doskonałego zestawu funkcji do obsługi 'ImmutableMap' - nie ma możliwości scalania-duplikatów-kluczy i/lub nie wyrzucania' IllegalStateException' (zgodnie z konwencją ustaloną przez "Collectors") –