java中list按照某个属性排序方法

public List sort(List list,final String sortName,final String direction){
        Collections.sort(list, new Comparator(){
            public int compare(Object a, Object b){
                try {
                    //根据属性名获取到field
                    Field field = a.getClass().getDeclaredField(sortName);
                    //field设置为public访问属性.
                    field.setAccessible(true);

                    //获取该属性的类型
                    Class typeClass = field.getType();
                    //int排序
                    if (typeClass.equals(Integer.class)) {
                        Integer one = (Integer)field.get(a);
                        Integer two = (Integer)field.get(b);

                        if ("desc".equals(direction)) {
                            return two - one;
                        } else {
                            return one - two;
                        }
                    } else {//String排序
                        String one = (String)field.get(a);
                        String two = (String)field.get(b);

                        if ("desc".equals(direction)) {
                            return two.compareTo(one);
                        } else {
                            return one.compareTo(two);
                        }
                    }
                } catch (Exception e) {
                    StringWriter sw = new StringWriter();
                    e.printStackTrace(new PrintWriter(sw, true));
                }
                return 1;

            }
        });
        return list;
    }

}
时间: 2024-08-29 23:58:35

java中list按照某个属性排序方法的相关文章

java 中根据类的属性排序

1 package edu.del; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.List; 6 import java.util.Scanner; 7 8 class Student implements Comparable<Student>{ 9 String name; 10 int score; 11 12 public Student(String name,

Java中Math对象的属性与方法

Math.sqrt() ——————>计算平方根Math.cbrt()————————>计算立方根Math.pow(a, b)——————————>计算a的b次方Math.max( , )——————————>计算两个参数最大值Math.min( , )————————————>计算两个参数最小值Math.abs()————————>求绝对值Math.ceil()——————————>向上取整.如12.1----13Math.floor()——————————&g

Java几种常用的实现排序方法

import java.util.Random; public class NumberSort{ /** * 私有构造方法,禁止实例化 */ private NumberSort(){ super(); } /** * 冒泡排序 * 比较相邻的元素.如果第一个比第二个大,就叫唤他们两个位置. * 对每一组相邻的元素作同样的工作,从开始的第一对到结束后的最后一对,这样剩下的最后一个应该是最大的数. * 针对所有元素重复以上操作,除了最后一个. * 持续对越来越少的数进行以上的操作,直到没有任何一

简述Java中Http/Https请求监听方法

一.工欲善其事必先利其器 做Web开发的人总免不了与Http/Https请求打交道,很多时候我们都希望能够直观的的看到我们发送的请求参数和服务器返回的响应信息,这个时候就需要借助于某些工具啦.本文将采用Fiddler2作为分析工具,Fiddler很强大,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,是越墙抓包之利器.关于工具的介绍可以参考下面的链接: http://www.cnblogs.com/TankXiao/archive/2012/02

Java中的length字段和length()方法

本文主要讲述Java中的length字段和length()方法,有需要的朋友可以参考下,更多Java教程知识,请登陆疯狂软件教育官网. 首先,你能快速回答下面的问题吗? 如果没有IDE(集成开发环境)的自动补全功能,如何获取数组和字符串的长度? 我问了不同等级的开发者(初级和中级)同样的问题,他们很难准确而确信地给出答案.虽然IDE提供的代码自动补全功能十分方便,但也带来了“表面理解(surface understanding)”的问题.在本文中,我会解释一些和Java数组的关键概念. 上述问题

java中遍历MAP的几种方法

java中遍历MAP的几种方法 Java代码 Map<String,String> map=new HashMap<String,String>();    map.put("username", "qq");    map.put("passWord", "123");    map.put("userID", "1");    map.put("em

Java中的五种单例模式实现方法

[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package s

Java基础---Java中无参数无返回值方法使用(三十六)

Java 中无参无返回值方法的使用 如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法. 方法的使用分两步: 第一步,定义方法 例如:下面代码定义了一个方法名为 show ,没有参数,且没有返回值的方法,执行的操作为输出 " welcome to imooc. " 注意哦: 1. 方法体放在一对大括号中,实现特定的操作 2. 方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式 第二步,调用方法 当需要调用方法执行某个操作

Java基础---Java中无参数带返回值方法的使用(三十七)

Java 中无参带返回值方法的使用 如果方法不包含参数,但有返回值,我们称为无参带返回值的方法. 例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果 在 calSum( ) 方法中,返回值类型为 int 类型,因此在方法体中必须使用 return 返回一个整数值. 调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理.如: 运行结果: 不容忽视的"小陷阱&