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返回值会报错啊 展开
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返回值会报错啊 展开
4个回答
展开全部
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类型,可设置按照从大到小还是从小到大排序
展开全部
你好,排序的接口是Comparator接口
compare是这个接口的方法
本方法有两个参数,返回int整数
根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
如果你还想了解更多,需要理解 “冒泡算法”
不明白 q
379988628
compare是这个接口的方法
本方法有两个参数,返回int整数
根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
如果你还想了解更多,需要理解 “冒泡算法”
不明白 q
379988628
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看懂你想要描述的问题.
map<key,value> 你说的double 是 key 还是 value?
map 是键值对的. 无序的集合. 不能根据key或value进行排序.
想要排序得循环遍历 map 后 通过 list 有序集合 进行排序.
或者可以这样 你自定义一个对象 例如
class A{
public double number;
public String value;
}
List<A> 元素根据 double 大小依次放进去. 这样利用List排序.
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;
}
}
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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询