Ich möchte die Frequenzen der Zahlen in einem TreeMap
mit den Frequenzen als die Schlüssel und die Zahlen, die diese Frequenz in einem ArrayList
haben.Inverted Collectors.toMap zu einer ArrayList hinzufügen
Ich habe zwei Probleme:
1) Ich bin eine „nicht-statischen Methoden kann nicht von einem statischen Kontext referenziert wird“ immer Fehler im ersten Parameter (AFAIK der Stream verweist auf ein Objekt - was ist los?)
2) Es gibt 4 Parameter für Collectors.toMap() - es scheint wie Parameter 4 erfordert Initialisierung mit einer neuen TreeMap>, Parameter 2 könnte eine ArrayList add() -Funktion sein und Parameter 3 könnte Null (vielleicht) . Wie wird das gemacht?
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, ...));
Im Moment kann ich nicht sehen, verwenden, wie von https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html zu bekommen, wo ich sein muss.
ich die bearbeitete Array.asList Zeile, da es von der vorliegenden Frage ablenkt. –
@JohnEstess ausgezeichnet, ich habe die Antwort editieren, um das auch zu entfernen – Eugene
Sie können ein paar Zeilen speichern, indem Sie als das zweite Argument zu 'toMap' folgendes:' x -> new ArrayList <> (singletonList (x.getKey ())) '. – Lii