今天接到一个任务:
一个已知的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()); }