原文出自:https://blog.csdn.net/seesun2012

简介如题: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


Java如何操作对象(bean)进行动态排序?的更多相关文章

  1. 086、Java数组之对象数组的动态初始化

    01.代码如下: package TIANPAN; class Book { private String title; private double price; public Book(Strin ...

  2. java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

    /*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...

  3. java设计模式--基础思想总结--父类引用操作对象

    看设计模式的相关书籍也有一段时间了,一开始其实是抱着作为java三大框架的基础知识储备来学习的,不过到后来,才发现,在设计模式的一些准则装饰下,java的面向对象威力才真正地体现出来,后面的将会陆续地 ...

  4. 有关java的引用传递,直接操作对象本身。直接删除BE的value中某值

    HashSet<String> refRegions = BE.get(regionName);    HashSet<String> values = new HashSet ...

  5. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

  6. java实现两个不同list对象合并后并排序

    工作上遇到一个要求两个不同list对象合并后并排序1.问题描述从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序.2.思路从数据库中查询到的数据放到各自list中,先遍历两 ...

  7. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  8. java中对对象进行判空的操作--简洁编码

    java中对对象进行判空的操作 首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.ut ...

  9. Java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json

    对象转换为Json 对象bean转换为Json List集合转换为Json 对象数组转换为Json Map集合转换为Json Set集合转为Json 字符串转换为Json 把Java对常用的一些数据转 ...

随机推荐

  1. C++并发多线程(一)

    并发:两个或者更多的任务同时发生,一个程序同时执行多个独立的任务. 以往计算机 单核CPU 某一个时刻只能执行一个任务 由操作系统调度 每秒钟进行多次所谓的任务切换并发的假象(不是真正的并发),这种切 ...

  2. Syncthing源码解析 - 源码目录说明!

    Syncthing是一个免费开源的p2p软件,Go语言编写的! 官网:https://syncthing.net/ 源码:https://github.com/syncthing/syncthing/ ...

  3. springmvc执行流程 源码分析

    进入DispatcherServlet 执行onRefresh,然后执行初始化方法initStrategies.然后调用doService——>doDispatch. 根据继承关系执行Servl ...

  4. php 编译代码

    编译其实就是把所有的代码整合在于一个文件,减少文件包含时间,加快php解析,虽然优化后时间上提升了不多,但能优化便多多少少进行优化.下面给一个编译例子,从而引申. // 定义编译状态 define(' ...

  5. css3旋转动画

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. “全栈2019”Java异常第十七章:Error详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  7. django_jquery中使用ajax发送post请求变成get请求

    今天在进行js开发的过程中出现了一个奇怪的问题,就是使用ajax向后端发送post请求时,在浏览器network中查看response时,显示400 bad request 并且请求方式变成get,因 ...

  8. ionic 项目 随笔

    1,首先 会进入src/index.html, <!-- The polyfills js is generated during the build process --> <sc ...

  9. json和csv文件存储

    一. json 1:基本概念 1.1 Json和Javascript JSON, 全称JavaScript Object Notation,它通过对象和数组的组合来表示数据.在JavaScript中一 ...

  10. Xcode 编译更改 Build 输出路径

    Xcode新建一个工程,build之后,可执行文件一般在 ~/Library/Developer/Xcode/DerivedData 下. 可以把这个路径指定为当前工程目录.  指定方法 Xcode ...