相关疑难解决方法(0)

TreeMap按值排序

我想写一个比较器,让我按值而不是默认的自然顺序对TreeMap进行排序.

我试过这样的东西,却找不到出了什么问题:

import java.util.*;

class treeMap {
    public static void main(String[] args) {
        System.out.println("the main");
        byValue cmp = new byValue();
        Map<String, Integer> map = new TreeMap<String, Integer>(cmp);
        map.put("de",10);
        map.put("ab", 20);
        map.put("a",5);

        for (Map.Entry<String,Integer> pair: map.entrySet()) {
            System.out.println(pair.getKey()+":"+pair.getValue());
        }
    }
}

class byValue implements Comparator<Map.Entry<String,Integer>> {
    public int compare(Map.Entry<String,Integer> e1, Map.Entry<String,Integer> e2) {
        if (e1.getValue() < e2.getValue()){
            return 1;
        } else if (e1.getValue() == e2.getValue()) {
            return 0;
        } else {
            return -1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我要问的是:我可以Map.Entry传递给比较器吗?

java

124
推荐指数
6
解决办法
24万
查看次数

如何整理TreeMap <String,Integer>?

我有一张地图:TreeMap<String, Integer> m = new TreeMap<>();我有一个完整的字母和值,显示我的文字中每个字母的次数.

我想按递减计数顺序对该地图进行排序; 也就是说,最常见的字母在第一行,最后一行表示最不频繁的字母.如果两个字母具有相同的频率,那么字母表中首先出现的字母必须首先出现.怎么做?

我试过Comparator:

public int compare(String a, String b) {
        if (base.get(a) >= base.get(b) && a.compareToIgnoreCase(b) < 0) {
            return -1;
        } else {
            return 1;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但仍然,不是它,输出是:

D 3
E 3
A 2
S 5
Run Code Online (Sandbox Code Playgroud)

伙计们......之前发现这个,这根本没有帮助.好的输出应该是:

S 5
D 3
E 3
A 2
Run Code Online (Sandbox Code Playgroud)

java treemap

6
推荐指数
1
解决办法
2838
查看次数

是treeMap中的值排序:java

我在java中使用treeMap.我想获得所有值的排序列表/集合.TreeMap.values()可以解决这个问题吗?

我得到的集合,它将基于keySet进行排序,或者此集合是随机的.

谢谢.

java treemap

1
推荐指数
1
解决办法
390
查看次数

标签 统计

java ×3

treemap ×2