Piszę metodę, która pobiera dane wejściowe Map
z formularza , gdzie jest zdefiniowane jako here.Java 8 - Lista filtrów wewnątrz wartości mapy
Metoda:
- Go nad klawiszami na
Map
i filtrować je za pomocą atrybutuTerm
. - Dla każdego z pozostałych klawiszy uzyskać rozmiaru odpowiedniej listy, cap to do 5 (
min(List.size(), 5)
) i dodać wynik do globalnego var (powiedzmy,totalSum
) - Return
totalSum
ten to, co napisałem do tej pory:
inputMap
.entrySet()
.stream()
.filter(entry -> entry.getKey().field().equals(fieldName)) // Keep only terms with fieldName
.forEach(entry -> entry.getValue()
.map(size -> Math.min(entry.getValue().size(), 5))) // These 2 lines do not work
.sum();
jestem w stanie wziąć na wejściu strumień list, wyjście liczbę całkowitą dla każdego z tych list i zwraca sumę wszystkich wyjść.
Oczywiście mogę to napisać przy użyciu pętli, ale próbuję nauczyć się języka Java 8 i byłem ciekawy, czy ten problem można rozwiązać, używając go.
Interfejs 'Map' ma teraz własną metodę' forEach() ', która pobiera instancję' BiConsumer'. Może to być wykorzystane do uproszczenia kodu. –