java中根据map的value进行排序
PHPz
PHPz 2017-04-18 10:31:50
[Java讨论组]

public class Testing {

    public static void main(String[] args) {
        HashMap<String,Double> map = new HashMap<String,Double>();
        ValueComparator bvc =  new ValueComparator(map);
        TreeMap<String,Double> sorted_map = new TreeMap<String,Double>(bvc);
        sorted_map.putAll(map);
    }
}
class ValueComparator implements Comparator<String> {
    Map<String, Double> base;
    public ValueComparator(Map<String, Double> base) {
        this.base = base;
    }
    // Note: this comparator imposes orderings that are inconsistent with equals.
    public int compare(String a, String b) {
        if (base.get(a) >= base.get(b)) {
            return -1;
        } else {
            return 1;
        } // returning 0 would merge keys
    }
}
PHPz
PHPz

学习是最好的投资!

全部回复(2)
大家讲道理

sorted_map在初始化的时候,你给了它Comparator, 所以sorted_map.putAll(map)的时候,实际上是把map里的每个entry放进sorted_map里,每放一个,sorted_map就会调用Comparator的compare方法来比较一下,决定放在哪个位置,这样sorted_map的entry就都是按照Comparator的顺序规则来排列的啦。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号