日期:2014-05-17  浏览次数:20817 次

list中的元素为javabean,如何根据javabean中的某个属性,对list中的元素排序
如题,
假如说有一个list,其中包含多个元素,这些元素都是javabean,例如:student类,包含(姓名,学号,成绩)属性,我想根据成绩属性对list中的元素进行一个排序(按student类的成绩属性由高到低在list中排序).

本人有一个想法,就是对list中的每个元素按成绩属性排序后放入另外一个新的list中,最终在页面用新的list迭代输入,这样应该可以得到我想要的结果,就是不知有没有更好的方法啊?

多谢各位啊!!


------解决方案--------------------
因该有一个sort方法的。你试试看。
------解决方案--------------------
public static void main(String[] args) {
List<User> list=new ArrayList<User>();
User user1=new User();
user1.setA1(1);
user1.setA2(12);
user1.setA3(13);
list.add(user1);
User user2=new User();
user2.setA1(2);
user2.setA2(22);
user2.setA3(23);
list.add(user2);
User user3=new User();
user3.setA1(3);
user3.setA2(32);
user3.setA3(33);
list.add(user3);

for (int i = 0; i < list.size(); i++) {
for (int j = i+1; j < list.size(); j++) {
if (list.get(i).getA1()<list.get(j).getA1()) {
User temp=new User();
temp.setA1(list.get(j).getA1());
temp.setA2(list.get(j).getA2());
temp.setA3(list.get(j).getA3());
list.set(j, list.get(i));
list.set(i, temp);
}
}
}
for (int i = 0; i < list.size(); i++) {
System.out.println("a1="+list.get(i).getA1()+"----a2="+list.get(i).getA1()
+"----a3="+list.get(i).getA3());
}
}
------解决方案--------------------
用collections.sort()方法
------解决方案--------------------
正解
探讨

用collections.sort()方法

------解决方案--------------------
实现Comparator接口,自定义一个比较器
代码示例
public class MyComp implements Comparator<Student> {

@Override
public int compare(Student o1, Student o2) {
return o1.getScore().compareTo(o2.getScore());
}
}
下面是比较
List<Student> studentList = new ArrayList<Student>();
//添加student实例到list中
Collections.sort(studentList, new MyComp());