黑马程序员技术交流社区
标题:
关于一个TreeMap集合的问题?
[打印本页]
作者:
潘廖明
时间:
2013-4-28 01:27
标题:
关于一个TreeMap集合的问题?
本帖最后由 潘廖明 于 2013-4-28 14:26 编辑
假如有个TreeMap<key,value>,如今想按value给这个TreeMap排序可以实现 ?如果可以给个Demo?
作者:
谭威
时间:
2013-4-28 12:16
这个排序是可以,但是不能直接排序,需要转化成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}
作者:
潘廖明
时间:
2013-4-28 14:24
谭威 发表于 2013-4-28 12:16
这个排序是可以,但是不能直接排序,需要转化成list排序,但是最终map还是默认的key排序。用Collections.so ...
基本了解了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2