java中map如何按double排序

Map<String,Integer>map=newTreeMap<String,Integer>();map.put("j2se",20);map.put("j2ee"... 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返回值会报错啊
展开
 我来答
小傻

2015-10-27 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31133
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

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类型,可设置按照从大到小还是从小到大排序

红我一17
2009-10-31 · TA获得超过373个赞
知道答主
回答量:269
采纳率:0%
帮助的人:0
展开全部
你好,排序的接口是Comparator接口
compare是这个接口的方法
本方法有两个参数,返回int整数
根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。

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

不明白 q
379988628
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莫装婢
2015-09-26 · TA获得超过324个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:113万
展开全部
没看懂你想要描述的问题.
map<key,value> 你说的double 是 key 还是 value?
map 是键值对的. 无序的集合. 不能根据key或value进行排序.
想要排序得循环遍历 map 后 通过 list 有序集合 进行排序.

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

public String value;
}
List<A> 元素根据 double 大小依次放进去. 这样利用List排序.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式