TreeMap排序中遇到的问题

import java.util.Comparator;
import java.util.TreeMap;

/**
 * @author hxh
 * @version 1.0
 * @date 2019/3/21 15:11
 */
public class TreeMapTest {
        public static void main(String[] args) {
            TreeMap<Long,Integer> map1 = new TreeMap<Long,Integer>();  //默认的TreeMap升序排列
            TreeMap<Long,Integer> map2= new TreeMap<Long,Integer>(new Comparator<Long>(){
                /*
                * int compare(Object o1, Object o2) 返回一个基本类型的整型,
                * 返回负数表示:o1 小于o2,
                * 返回0 表示:o1和o2相等,
                * 返回正数表示:o1大于o2。
                */
                public int compare(Long a,Long b){
                    return (int) (b-a);
                }
            });
            map2.put(1L,2);
            map2.put(2L,4);
            map2.put(7L, 1);
            map2.put(5L,2);
            System.out.println("Map2="+map2);

            map1.put(1L,2);
            map1.put(2L,4);
            map1.put(7L, 1);
            map1.put(5L,2);
            System.out.println("map1="+map1);
        }


}

 

如果TreeMap的key是Long类型的时候,比较器public int compare(Long a,Long b){ return (int) (b-a); } b-a有可能还是Long类型的值,这个时候比较器会失灵,导致整个treeMap getKey(XXXL)获取不到value

 

解决办法:

用Java集合自带的比较器,

TreeMap<Long, List<Map>> doDetailListMap = new TreeMap<>(Comparator.reverseOrder());

就能解决上述问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值