Chciałbym umieścić częstotliwości numerów w TreeMap
z częstotliwościami jako klucze i numery, które mają tę częstotliwość w ArrayList
.Odwrócony Collectors.toMap, aby dodać do ArrayList
mam dwa problemy:
1) Dostaję „metod non-statyczne nie można odwoływać się od statycznego kontekstowego” błąd w pierwszym parametrze (AFAIK strumień odwołuje obiekt - co się dzieje?)
2) Istnieją 4 parametry dla Collectors.toMap() - wydaje się, że parametr 4 wymaga inicjalizacji z nową mapą drzewa>, parametrem 2 może być funkcja add() ArrayList, a parametr 3 może mieć wartość null (być może) . Jak to się robi?
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> array = Arrays.asList(1, 2, 4, 5, 6, 4, 8, 4, 2, 3);
Map<Integer, Long> m = array.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(m);
TreeMap<Long, List<Integer>> tm = m.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getValue, ...));
W tej chwili nie mogę wykorzystać zobaczyć jak dostać się z https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html gdzie muszę być.
I redagował Linia Array.asList, ponieważ odwraca uwagę od danego pytania. –
@JohnEstess doskonała, edytowałem odpowiedź, aby ją usunąć, także – Eugene
Możesz zapisać kilka wierszy, mając jako drugi argument 'toMap' następujące:' x -> new ArrayList <> (singletonList (x.getKey ())) '. – Lii