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 list = new ArrayList();

list.add(s);

list.add(s1);

list.add(s2);

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

for (Student sd : list) {

System.out.println(sd);// 输出所有对象

}

// 进行排序(特别注意,这里可以动态入参)//

Collections. sort(list, new BeanComparator("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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值