• Java如何操作对象(bean)进行动态排序?


    原文出自: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


  • 相关阅读:
    十二、redis常用的运维命令及注意参数
    十一,redis的主从集群
    十、redis的持久化配置
    九、Redis的消息发布和订阅
    八、Redis 中的事务
    apache、nginx、iis日志记录的各个字段内容与含义
    Pikachu-RCE
    Pikachu-SQL-Inject(SQL注入漏洞)
    Pikachu-CSRF(跨站请求伪造)
    Pikachu-XSS(跨站脚本)漏洞
  • 原文地址:https://www.cnblogs.com/seesun2012/p/9214968.html
Copyright © 2020-2023  润新知