Java如何操作对象bean进行动态排序
目录
Java如何操作对象(bean)进行动态排序?
简介如题:Java如何操作对象(bean)进行动态排序?Java实体类(bean)动态排序?
原理:利用
反射
根据
指定的属性值
来
排序
;
技巧:利用
Collections
组件的
ComparatorUtils类
可以实现含有
空值
的排序,请读者参考相关的
API
;
(1)编写Student类,该类定义了3个域:id,name,score,并且提供了相应的get和set方法。代码如下:
package com.seesun2012.test;
import java.io.Serializable;
/**
* 学生类
*
* @author seesun2012@163.com
*
*/
public class Student implements Serializable{
private static final long serialVersionUID = -2551164688062992567L;
private int id; //编号
private String name; //姓名
private double score; //分数
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String toString() {
return "学生编号:" + id + ",学生姓名:" + name + ",分数:" + score;
}
}
(2)编写测试类,在该类的main()方法中创建了3个Student对象并进行初始化,然后使用score域进行排序。代码如下:
package com.seesun2012.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.commons.beanutils.BeanComparator;
/**
* Java实体类(bean)动态排序
*
* @author seesun2012@163.com
*
*/
public class BeanSortTest {
public static void main(String[] args){
Student s = new Student();
s.setId(1);
s.setName("张三");
s.setScore(80.00);
Student s1 = new Student();
s1.setId(2);
s1.setName("李四");
s1.setScore(100.00);
Student s2 = new Student();
s2.setId(3);
s2.setName("王五");
s2.setScore(59.99);
List<Student> list = new ArrayList<Student>();
list.add(s);
list.add(s1);
list.add(s2);
System.out.println("排序前:");
for (Student sd : list) {
System.out.println(sd);// 输出所有对象
}
// 进行排序(特别注意,这里可以动态入参)//
Collections.<Student> sort(list, new BeanComparator<Student>("score"));
System.out.println("按成绩排序后:");
for (Student sd : list) {
System.out.println(sd);// 输出所有对象
}
}
}
排序前:
学生编号:1,学生姓名:张三,分数:80.0
学生编号:2,学生姓名:李四,``分数:100.0``
学生编号:3,学生姓名:王五,``分数:59.99``
按【成绩】排序后:
学生编号:2,学生姓名:李四,``分数:59.99``
学生编号:1,学生姓名:王五,分数:80.0
学生编号:3,学生姓名:张三,``分数:100.0``
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!
持续更新中…
如有对思路不清晰或有更好的解决思路,欢迎与本人交流,QQ群:273557553,个人微信:
你遇到的问题是小编创作灵感的来源!