java map 倒序_java compareTo对map中的元素进行倒序排序

本文展示了如何创建一个自定义的Comparator类ComparatorList,用于对包含Map对象的列表进行排序。通过覆盖Comparator的compare方法并根据指定字段(如'eat_time')进行比较,实现了列表的倒序排列。示例代码中,Map对象根据'eat_time'字段的值进行降序排序,输出结果为:pear->apple->orange。
摘要由CSDN通过智能技术生成

类ComparatorList

import java.util.Comparator;

import java.util.Map;

public class ComparatorList implements Comparator{

private String compareStr;

public ComparatorList(){

}

public

ComparatorList(String compareStr){

this.compareStr=compareStr;

}

@Override

public int compare(Object o1, Object o2) {

int flag2=0;

Map map1=(Map)o1;

Map map2=(Map)o2;

System.out.println("map1.get(compareStr):"+map1.get(compareStr));

System.out.println("map2.get(compareStr):"+map2.get(compareStr));

int

flag=String.valueOf(map1.get(compareStr)).compareTo(String.valueOf(map2.get(compareStr)));

//倒序

if(flag>0){

flag2=-1;

}else if(flag<0){

flag2=1;

}

System.out.println(flag2);

return flag2;

}

}

类Test3

package com.mrlun.test;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import edu.emory.mathcs.backport.java.util.Collections;

public class Test3 {

public void test(){

}

public static void main(String[] args) {

Map map3=new HashMap();

map3.put("fruits", "apple");

map3.put("eat_time", "20140721

00:01:29");

Map map1=new HashMap();

map1.put("fruits",

"orange");

map1.put("eat_time", "20140720

00:20:29");

Map map2=new HashMap();

map2.put("fruits", "pear");

map2.put("eat_time", "20140721

00:05:29");

List list=new

ArrayList();

list.add(map1);

list.add(map2);

list.add(map3);

Collections.sort(list,new

ComparatorList("eat_time"));

for(Object o:list ){

Map

m=(Map)o;

System.out.println(m.get("fruits")+":"+m.get("eat_time"));

}

}

}

// output:

pear:20140721 00:05:29

apple:20140721 00:01:29

orange:20140720 00:20:29

总结:

要想实现自己的比较器,就要实现java提供的Comparator接口,并且覆盖其compare方法,返回值有-1、0、1,分别表示比较的结果,默认是升序排列,要想实现倒序,则要加上特殊处理的代码,如上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值