java中map如何按double排序

Map<String, Integer> map = new TreeMap<String, Integer>();

map.put("j2se", 20);
map.put("j2ee", 10);
map.put("j2me", 30);

List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(
map.entrySet());
//排序前
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
//排序
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
return (o2.getValue() - o1.getValue());
}
});
//排序后
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
排序前:
j2ee=10
j2me=30
j2se=20
排序后:
j2me=30
j2se=20
j2ee=10
这是网上找的map排序例子,但是如何把它改成按double排序?
Collections.sort中貌似接口就是public int compare
改成double返回值会报错啊

java中map按照double大小进行排序,可以使用collentions接口的sort方法进行比较,实例如下:

Collections.sort(dataMap, new Comparator<Map<String, Object>>() {

@Override
public int compare(Map<String, Object> lhs, Map<String, Object> rhs) {

Double d5 = ((Double) rhs.get(OpenPrice));
Double d6 = (Double) lhs.get(OpenPrice);
       if (d5 != null && d6 != null) {
                     return d5.compareTo(d6);
} else {
return flag;
}
// return d1.compareTo(d2);
}

根据返回的int类型,可设置按照从大到小还是从小到大排序

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-31
你好,排序的接口是Comparator接口
compare是这个接口的方法
本方法有两个参数,返回int整数
根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。

如果你还想了解更多,需要理解 “冒泡算法”

不明白 q
379988628
第2个回答  2015-09-26
没看懂你想要描述的问题.
map<key,value> 你说的double 是 key 还是 value?
map 是键值对的. 无序的集合. 不能根据key或value进行排序.
想要排序得循环遍历 map 后 通过 list 有序集合 进行排序.

或者可以这样 你自定义一个对象 例如
class A{
public double number;

public String value;
}
List<A> 元素根据 double 大小依次放进去. 这样利用List排序.
第3个回答  2009-10-31
java.util.Collections
static <T> void sort(List<T> list, Comparator<? super T> c)

java.util.Comparator
int compare(T o1, T o2)

你需要实现Comparator,作为比较器。
import java.util.Comparator;
class MyComparator implements Comparator{
public int compare(double o1, double o2){
if(o1>o2) return 1;
else if(o1==o2) return 0;
else return -1;
}
}本回答被提问者采纳
相似回答