请教一个排序问题

xiaozhao32 2008-09-12 11:39:42
现在获得一个List<Map<String,Object> 内容如下:
{id=ddd, name=444, p=A02}
{id=bbb, name=222, p=B01}
{id=ccc, name=333, p=C01}
{id=aaa, name=111, p=A01}
{id=eee, name=555, p=C02}
...

我希望按照Map中的p排序, 然后返回List结果是:
{id=aaa, name=111, p=A01}
{id=bbb, name=222, p=B01}
{id=ccc, name=333, p=C01}
{id=ddd, name=444, p=A02}
{id=eee, name=555, p=C02}
...
谢谢~
...全文
172 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnsoncr 2008-09-12
  • 打赏
  • 举报
回复
让你要放进List的对象implements Comparator<T>
然后按你的需要实现compare(T arg0, T arg1)方法
sjkof 2008-09-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaozhao32 的回复:]
TreeMap 排的序是A01 A02 B01 B02...
好像不大行。。
[/Quote]

你这个排序不是标准的排序,要自己写
xiaozhao32 2008-09-12
  • 打赏
  • 举报
回复
TreeMap 排的序是A01 A02 B01 B02...
好像不大行。。
smsqj 2008-09-12
  • 打赏
  • 举报
回复
Set s = props.keySet();
s = new TreeSet(s);

利用TreeSet可以自动排序。

因为:TreeMap则是对键按序存放
xiaozhao32 2008-09-12
  • 打赏
  • 举报
回复
谢谢楼上 3Q~
mayuanfei 2008-09-12
  • 打赏
  • 举报
回复

List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map1 = new Hashtable<String, Object>();
map1.put("id", "ddd");map1.put("name", "444");map1.put("p", "A02");
Map<String, Object> map2 = new Hashtable<String, Object>();
map2.put("id", "bbb");map2.put("name", "222");map2.put("p", "B01");
Map<String, Object> map3 = new Hashtable<String, Object>();
map3.put("id", "ccc");map3.put("name", "333");map3.put("p", "C01");
Map<String, Object> map4 = new Hashtable<String, Object>();
map4.put("id", "aaa");map4.put("name", "111");map4.put("p", "A01");
Map<String, Object> map5 = new Hashtable<String, Object>();
map5.put("id", "eee");map5.put("name", "555");map5.put("p", "C02");
list.add(map1);list.add(map2);list.add(map3);list.add(map4);list.add(map5);

Collections.sort(list, new Comparator(){
public int compare(Object o1, Object o2) {
Map<String, Object> m1 = (Map<String, Object>) o1;
Map<String, Object> m2 = (Map<String, Object>) o2;
return m1.get("p").toString().compareTo(m2.get("p").toString());
}
});
for(Map<String, Object> map : list) {
System.out.println(map.get("id")+"\t"+map.get("name")+"\t"+map.get("p"));
}
}

mayuanfei 2008-09-12
  • 打赏
  • 举报
回复
{id=ddd, name=444, p=A02}
{id=bbb, name=222, p=B01}
{id=ccc, name=333, p=C01}
{id=aaa, name=111, p=A01}
{id=eee, name=555, p=C02}
上面的数据是在一个Map中,还是list的每个Map就是一行
smsqj 2008-09-12
  • 打赏
  • 举报
回复
打印结果:
{aaa,111,A01}
{bbb,222,A02}
{ccc,333,A03}
{ddd,444,A04}
{eee,555,A05}
smsqj 2008-09-12
  • 打赏
  • 举报
回复
我编了以下代码,希望能给你启发:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

class Stu{
String id = "";
String name = "";
String p = "";
public Stu(String id,String name,String p){
this.id = id;
this.name = name;
this.p = p;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getP() {
return p;
}
public void setP(String p) {
this.p = p;
}
}
public class ListMap {
public static void main(String[] args) {
List <Map <String,Stu>> listStu = new ArrayList <Map <String,Stu>>();
Map <String,Stu> mapStu = new TreeMap <String,Stu>();
Stu stu1 = new Stu("ddd","444","A04");
Stu stu2 = new Stu("aaa","111","A01");
Stu stu3 = new Stu("ccc","333","A03");
Stu stu4 = new Stu("eee","555","A05");
Stu stu5 = new Stu("bbb","222","A02");
mapStu.put(stu1.getP(), stu1);
mapStu.put(stu2.getP(), stu2);
mapStu.put(stu3.getP(), stu3);
mapStu.put(stu4.getP(), stu4);
mapStu.put(stu5.getP(), stu5);
Collection<Stu> colSut = mapStu.values();
Iterator its = colSut.iterator();
while(its.hasNext()){
Stu s = (Stu)its.next();
System.out.println("{"+s.getId()+","+s.getName()+","+s.getP()+"}");
}
}
}

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧