java中list里面存放map,根据map中的某两个个字段进行排序
5个回答
展开全部
package com.compare.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Main mainTest=new Main();
mainTest.sortMap();
}
public void sortMap(){
List<Map<Integer, Double>> maps=new ArrayList<Map<Integer, Double>>();
for(int i=0;i<10;i++){
HashMap<Integer, Double> map=new HashMap<Integer, Double>();
for(int j=0;j<2;j++){
map.put(j, Math.random());
}
maps.add(map);
}
for(Map<Integer, Double> map:maps){
System.out.println(getValue(map));
}
System.out.println("************************");
Map<Integer, Double> currentMap;
for(int i=0;i<maps.size()-1;i++){
for(int j=0;j<maps.size()-i-1;j++){
if(getValue(maps.get(j))>getValue(maps.get(j+1))){
currentMap=maps.get(j+1);
maps.set(j+1, maps.get(j));
maps.set(j,currentMap);
}
}
}
for(Map<Integer, Double> map:maps){
System.out.println(getValue(map));
}
}
public Double getValue(Map<Integer, Double> currentMap){
return currentMap.get(0)+currentMap.get(1);
}
}
我采用最简单的排序大数沉底。而且getValue
方法你可以自己实现,决定使用哪几个进行排序。(我们有进行key值不存在的判断)
展开全部
list是存放单独的元素的,而map集合存放的是键值和对应的映射关系 你是不能单纯的把map存入list中的,你是想把map的键存入list吗?还是存放值,异或着是存放他的映射关系?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用Collections.sort(List list, Comparator c)
实现一个Comparator即可
public class MyComparator implements Comparator {
public int compare(Object o1, Object o2) {
Map m1=(Map)o1, m2=(Map)o2;
//从m1与m2取字段值然后比较,大于返回1,等于返回0,小于返回-1
}
public boolean equals(Object o) {
//同上面类似
}
实现一个Comparator即可
public class MyComparator implements Comparator {
public int compare(Object o1, Object o2) {
Map m1=(Map)o1, m2=(Map)o2;
//从m1与m2取字段值然后比较,大于返回1,等于返回0,小于返回-1
}
public boolean equals(Object o) {
//同上面类似
}
追问
恩 这是JAVA的 实现 vb.net 也可以这样吗
追答
实现System.Collections.IComparer
Public Class MyComparer
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) _
As Integer Implements IComparer.Compare
list.sort(new MyComparer)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的就用两个for循环,
用打擂算法排序(或者选择排序都可以)
用打擂算法排序(或者选择排序都可以)
追问
具体来说呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-11
展开全部
实现Comparator接口就好了,想怎么排就怎么排。
追问
vb.net 也可以这样吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询