Wie sortiere ich eine Hash-Map basierend auf der Anzahl der Schlüssel für einen Wert mit flatmap java8?

Dies ist eine Fortsetzung vonWie erhalte ich die Anzahl der Schlüssel für Werte in einer Hash-Map mit lambda . Ich habe einHashMap und ich möchte die Anzahl der Schlüssel für jeden Wert finden

Map<Integer, List<Integer>> map = new HashMap<Integer, List<Integer>>() {{
    put(0, Arrays.asList(1, 2));
    put(1, Arrays.asList(2, 0, 3));
    put(2, Arrays.asList(4,0,1));
    put(3, Arrays.asList(4,1, 5));
    put(4, Arrays.asList(5,2,3));
    put(5, Arrays.asList(4,3));
}};

Entsprechend dem obigen Beitrag habe ich es mit Flat Mapping versucht:

Map<Object, Long> ex = 
                map.values()
                .stream()
                .flatMap(Collection::stream)
                .collect(Collectors.groupingBy(v -> v, Collectors.counting()));

System.out.println(ex);

Die Ausgabe ist

{0=2, 1=3, 2=3, 3=3, 4=3, 5=2}. 

Dies bedeutet, 0 hat zwei Tasten, 1 hat drei Tasten und so weiter. Jetzt möchte ich die Schlüssel und Werte in absteigender Reihenfolge nach der Anzahl der Schlüssel sortieren. Ich habe so etwas ausprobiert:

Map<Object, Long> ex = 
                map.values()
                .stream()
                .flatMap(Collection::stream)
                .collect(Collectors.groupingBy(v -> v, Collectors.counting()));

                        .entrySet()
                        .stream()
                        .sorted(Map.Entry.<String, Long>comparingByValue(reverseOrder()).thenComparing(Map.Entry.comparingByKey()))
                        .collect(LinkedHashMap::new, (m,e) -> m.put(e.getKey(), e.getValue()), Map::putAll);

Ich möchte die folgende Ausgabe:

1=[2, 3, 0], 2=[1,4,0], 3=[1, 4, 5], 4=[2, 3, 5], 0=[1, 2], 5=[3, 4]

Die Schlüssel und Werte sollten in absteigender Reihenfolge entsprechend dieser Anzahl von Schlüsseln angeordnet werden.{0=2, 1=3, 2=3, 3=3, 4=3, 5=2}: 1, 2, 3, 4 haben drei Tasten, 0 und 5 haben zwei Tasten.

Zum Beispiel:1=[2, 3, 0]: 1 hat drei Tasten, daher erscheint es zuerst mit[2, 3, 0]: 2 und 3 haben drei Tasten und 0 hat nur zwei Tasten.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage