map按照value进行排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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());
}