当前位置: 首页 > 知识库问答 >
问题:

如何根据每个键值的大小对LinkedHashMap进行排序?

蓬野
2023-03-14
myMap.entrySet().stream()
         .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
         .collect(Collectors.toMap(
                  Map.Entry::getKey,
                  Map.Entry::getValue,
                  (x,y) -> {throw new AssertionError();},
                  LinkedHashMap::new
         ));
List<Map.Entry<String, Integer>> entries =
  new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
  public int compare(Map.Entry<String, Integer> a, Map.Entry<String,Integer> b){
    return a.getValue().size().compareTo(b.getValue().size());
   }
});
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String, Integer> entry : entries) {
  sortedMap.put(entry.getKey(), entry.getValue());
}

对LinkedHashMap进行排序

共有1个答案

唐修能
2023-03-14

你试过的很接近。以下是一个固定的版本:

List<Map.Entry<Integer, Set<Integer>>> entries = new ArrayList<>(
            map.entrySet());
Collections.sort(entries,
        new Comparator<Map.Entry<Integer, Set<Integer>>>() {
            public int compare(Map.Entry<Integer, Set<Integer>> a,
                    Map.Entry<Integer, Set<Integer>> b) {
                return Integer.compare(
                          a.getValue().size(),
                          b.getValue().size());
            }
        });

Map<Integer, Set<Integer>> sortedMap = new LinkedHashMap<>();
for (Map.Entry<Integer, Set<Integer>> entry : entries) {
    sortedMap.put(entry.getKey(), entry.getValue());
}

用…设置

 LinkedHashMap<Integer, Set<Integer>> map = new LinkedHashMap<>();
 map.put(1, new HashSet<>(Arrays.asList(1,2,3)));
 map.put(2, new HashSet<>(Arrays.asList(1,2)));
 map.put(3, new HashSet<>(Arrays.asList(1)));

和跑步

System.out.println(sortedMap);
{3=[1], 2=[1, 2], 1=[1, 2, 3]}
 类似资料:
  • 我有一个,其中的键是字符串。我需要获取这些键并根据键大小(即字符串长度)对其进行排序,然后将其存储在某个中。 注意:如果两个键的大小相同,那么我们可以把它放在任何顺序。 为(如)。

  • 问题内容: 我有一个这样的: 我想根据列表值的大小按升序对地图进行排序。我怎样才能做到这一点? 在这种情况下,我希望订购加拿大,印度,美国的钥匙。 问题答案: 没有可保证的迭代顺序,因此您需要收集到一个才能使排序有意义。 之所以引发,是因为合并器功能仅用于并行流],而我们并未使用。 如果您觉得可读性更好,也可以使用:

  • 本文向大家介绍PHP实现根据数组某个键值大小进行排序的方法,包括了PHP实现根据数组某个键值大小进行排序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现根据数组某个键值大小进行排序的方法。分享给大家供大家参考,具体如下: 问题:针对给定数组的某个键的键值进行排序 解决方法: 运行结果: PS:这里再为大家推荐一款关于排序的演示工具供大家参考: 在线动画演示插入/选择/冒泡/

  • 我正在尝试使用Java对由整数对字符串组成的数组进行排序 输入为: 所需的输出是:

  • 问题内容: 如何使用树的值而不是键对树图进行排序? 问题答案: 您不能这样做,因为TreeMap的比较器仅针对键运行,例如,参见this 构造函数。 无论如何,您可以使用多个Collections,使用TreeMap(或HashMap)通过键查找元素,并具有SortedSet来迭代值。