treemap倒叙_java对map进行排序(对日期倒叙)

工作中遇到这样一个问题,需要一个map,key中存放的是日期比如 2016-01-01,但是我还需要对这个map中的日期倒序排列。

###首先有下面两个概念

HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Null。非同步的。

TreeMap: 能够把它保存的记录根据key排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。

所以我们如果使用TreeMap就可以对日期进行排列

String s1 = "2016-01-02";

String s2 = "2016-01-03";

String s3 = "2016-02-02";

String s4 = "2016-02-03";

Map treeMapDefalut = new TreeMap();

treeMapDefalut.put(s1,1);

treeMapDefalut.put(s2,1);

treeMapDefalut.put(s3,1);

treeMapDefalut.put(s4,1);

System.out.println(treeMapDefalut);

但是结果却是:{2016-01-02=1, 2016-01-03=1, 2016-02-02=1, 2016-02-03=1} 按照字符串升序排列,所以我们得实现比较器

Map treeMapDesc = new TreeMap(new Comparator (){

@Override

public int compare(String o1, String o2) {

return o2.compareTo(o1);

}

});

//注意,compareTo是字符串比较方法,只需要记住倒序,让o2和o1去比较即可。

//对数字进行排序:

Map treeMapIntDesc = new TreeMap(new Comparator() {

@Override

public int compare(Integer o1, Integer o2) {

return o2-o1;

}

});

treeMapDesc.put(s1,1);

treeMapDesc.put(s2,1);

treeMapDesc.put(s3,1);

treeMapDesc.put(s4,1);

System.out.println(treeMapDesc);

结果:{2016-02-03=1, 2016-02-02=1, 2016-01-03=1, 2016-01-02=1} 达到目的

如果比较的两个key值相等(即比较结果为0),则会被后添加进去的key-value覆盖掉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值