根据 ArrayList 大小对映射到 ArrayList 的 HashMap 进行排序

Sort HashMap that maps to ArrayList based on ArrayList size

我有一个 HashMapDimensionkey)映射到 Integersvalue)的 ArrayList。如何根据 IntegersArrayList 的大小对 HashMap 进行排序?

HashMap<Dimension,ArrayList<Integer>> map = new HashMap<Dimension,ArrayList<Integer>>();

//code to sort:

我猜您需要根据值的大小从这个 HashMap 创建一个 sortedMap。
由于 HashMap 无法保持顺序,我正在使用 LinkedHashMap 并使用 Java 8 (Streams).

对于升序:

Map<String, List<Integer>> collect = map.entrySet().stream()
                    .sorted((entry1, entry2) -> Integer.compare(entry1.getValue().size(), entry2.getValue().size()))
                    .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a,b) -> a, LinkedHashMap::new));

对于降序:

Map<String, List<Integer>> collect = map.entrySet().stream()
                    .sorted((entry1, entry2) -> Integer.compare(entry2.getValue().size(), entry1.getValue().size()))
                    .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a,b) -> a, LinkedHashMap::new));