50,527
社区成员
发帖
与我相关
我的任务
分享
怎样对map的key和value分别排序啊
我想对Map进行value排序。
如:
排序前为:[("b",1),("a",3),("c",2)]
排序后为:[("b",1),("c",2),("a",3)]
我想对Map进行key排序。
如:
排序前为:[("b",1),("a",3),("c",2)]
排序后为:[("a",3),("b",1),("c",2)]
谢谢大家的踊跃帮助哈
import java.util.*;
public class MapSort{
public static void main(String args[]){
Map<String,Integer> map=new HashMap<String,Integer>();
map.put("b",1);map.put("a",3);map.put("c",2);
List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(list, new KeyComparator());//这个是按照key排序
//Collections.sort(list, new ValueComparator());//这个是按照value排序
Iterator<Map.Entry<String,Integer>> i = list.iterator();
while (i.hasNext()) {
Map.Entry<String,Integer> entry = i.next();
System.out.println("key=" + entry.getKey() + ", value="+ entry.getValue());
}
}
}
class KeyComparator implements Comparator<Map.Entry<String,Integer>> {
public int compare(Map.Entry<String,Integer> o1,
Map.Entry<String,Integer> o2) {
return o1.getKey().compareTo(o2.getKey());
}
}
class ValueComparator implements Comparator<Map.Entry<String,Integer>> {
public int compare(Map.Entry<String,Integer> o1,
Map.Entry<String,Integer> o2) {
return o1.getValue().intValue() - o2.getValue().intValue();
}
}