根据 ArrayList 大小对映射到 ArrayList 的 HashMap 进行排序
Sort HashMap that maps to ArrayList based on ArrayList size
我有一个 HashMap
将 Dimension
(key
)映射到 Integers
(value
)的 ArrayList
。如何根据 Integers
的 ArrayList
的大小对 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));
我有一个 HashMap
将 Dimension
(key
)映射到 Integers
(value
)的 ArrayList
。如何根据 Integers
的 ArrayList
的大小对 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));