java list 相同的字段排序

我不是按照什么大小来排序,是按照字段相同,则排在一起。例如user类
private String id; //用户id
private int age; //用户年龄
private String name; //用户名

User u1=new User("admin",20,"张三");
User u2=new User("sgw",11,"lisi");
User u3=new User("admin",20,"wangwu");
User u4=new User("qw",11,"赵六");
User u5=new User("admin",20,"张三");
我想这样先按照id排序,就是说,admin的排在一起,然后名字相同的在排在一起,然后张三排在一起,结果是
ID:admin,年龄:20,名字:张三
ID:admin,年龄:20,名字:张三
ID:admin,年龄:20,名字:王五
ID:sgw,年龄:11,名字:lisi
ID:qw,年龄:11,名字:赵六
这样的来显示
public int compare(User o1, User o2) {
System.out.println("1====="+o1.getId()+"我是第一个");
System.out.println("2===="+o1.getId()+"我是第二个");
if(o1.getId().equals(o2.getId())){
if(o1.getName().equals(o2.getName())){
System.out.println("yes");
return 0;
}
else{
return 1;
}
}
else{
return -1;
}
这样好像排序,还是不行

1. 集合类List存放的数据,默认是按照放入顺序排序的。我们也可以对list中某一个元素进行排序。例如;

package test.tool.gui.dbtool.util;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

public class Test {

public static void main(String[] args) {

List list = new ArrayList();

2.创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中

Student s1 = new Student();

s1.setAge(20);

Student s2 = new Student();

s2.setAge(19);

Student s3 = new Student();

s3.setAge(21);

list.add(s1);

list.add(s2);

list.add(s3);

System.out.println("排序前:"+list);

Collections.sort(list, new Comparator(){

public int compare(Student o1, Student o2) {

//按照学生的年龄进行升序排列

if(o1.getAge() > o2.getAge()){

return 1;

}

if(o1.getAge() == o2.getAge()){

return 0;

}

return -1;

}

});

System.out.println("排序后:"+list);

}

}

class Student{

private int age;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return getAge()+"";

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-05
给你个思路吧,难到不难,不过做出来,没什么效率可言。纯粹是练手罢了。首先,遍历你的集合list1,找出ID字段值相等的对象,并将相等的字段值存入一个新的集合list2中。新集合就是你要的所有名字相同的字段值。嵌套for循环,遍历list2找出list1中ID值与其值相等的所有对象并保存到新集合list3中。name字段的排序同上。说起来太麻烦了。你好好想想把。追问

不行··这种方式太慢了,我是用来统计数据的,这种方式首先pass掉

追答

统计数据那就在通过SQL来筛选,你在程序里做这个工作,是很不明智的。group by 在order by 一下不就OK了。

本回答被提问者采纳
第2个回答  2012-12-05
其实你user写一个toString方法,把需要排序的字段都加里,直接对toString出来的字符串排序应该能达到你要的效果追问

我这只是先做一个例子,我具体的项目不需要tostring 是在jsp遍历一个list

第3个回答  2012-12-05
这样怎么不行了,题目还不太明白