这个排序是可以,但是不能直接排序,需要转化成list排序,但是最终map还是默认的key排序。用Collections.sort(list,Compartor);这个方法可以排序。但排完序后只是l转化后的list排序了:- Map<Integer,String> map=new TreeMap<Integer,String>();
- map.put(1, "bb");
- map.put(4, "ffww");
- map.put(2, "aa");
- map.put(6, "dds");
- map.put(5, "vv");
- map.put(3, "ee");
- //排序前
- System.out.println(map);//默认按照键排序的{1=bb, 2=aa, 3=ee, 4=ffww, 5=vv, 6=dds}
- //用工具类中的sort方法进行排序,指定比较器,需要将map转化成list集合
- //集合中存储的是每对元素
- List<Map.Entry<Integer,String>> list=new ArrayList<Map.Entry<Integer,String>>(map.entrySet());
- Collections.sort(list, new Comparator<Map.Entry<Integer,String>>() {
- @Override
- public int compare(Entry<Integer, String> o1, Entry<Integer, String> o2) {
- int temp=o1.getValue().compareTo(o2.getValue());
- //按照map中的value比较
- return temp==0?o1.getKey()-o2.getKey():temp;
- }
- });
- System.out.println(list);//list排序后[2=aa, 1=bb, 6=dds, 3=ee, 4=ffww, 5=vv]
复制代码 但是map还是System.out.println(map);//map排序后{1=bb, 2=aa, 3=ee, 4=ffww, 5=vv, 6=dds} |