map按照value进行排序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

map按照value进⾏排序

今天接到⼀个任务:

⼀个已知的map按照value进⾏排序。

分析: hashMap是没有顺序的,要想使map有顺序,需要使⽤其他的map:⽐如treeMap 。⽽排序就⽤Collection.sort()就可以了。 废话不多说,直接看代码。

Map<String, String> map = new TreeMap<String, String>();

map.put("d", "");

map.put("c", "nolimit");

map.put("b", "4000000000");

map.put("a", "133");

//这⾥将map.entrySet()转换成list

List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());

//然后通过⽐较器来实现排序

Collections.sort(list,new Comparator<Map.Entry<String,String>>() {

//升序排序

public int compare(Entry<String, String> o1,Entry<String, String> o2) {

if(StringUtil.isEmpty(o1.getValue())){

o1.setValue("0");

}

if(StringUtil.isEmpty(o2.getValue())){

o2.setValue("0");

}

if("nolimit".equalsIgnoreCase(o1.getValue())){

o1.setValue("9999999999999");

}

if("nolimit".equalsIgnoreCase(o2.getValue())){

o2.setValue("9999999999999");

}

return (new BigDecimal(o1.getValue())).compareTo(new BigDecimal(o2.getValue()));

}

});

for(Map.Entry<String,String> mapping:list){

System.out.println(mapping.getKey()+":"+mapping.getValue());

}

相关文档
最新文档