Java实现对List中的对象按某个字段进行排序

该文章整理自网上的大牛和专家无私奉献的资料,如果某部分不小心侵犯了大家的利益,还望海涵联系博主删除。

public class Logs implements Serializable, Comparable<Logs> {

    private String id;
    private String username;
    private String contents;
    private String consequence;
    private String ip;
    private Long times;

    @Override
    public int compareTo(Logs o) {
        return 0;
    }

}
解析: Logs实体,要继承Comparable<T>接口, 然后再实现一个public int compareTo(Logs o) 方法.

现在,我要对List<Logs> 中的数据按 times 字段进行排序


    @Test
    public void testMath(){
        List<Logs> list = new ArrayList<Logs>();
        list.add(new Logs("1","chen", "djifand", "jdifa", "jdfid", 49L));
        list.add(new Logs("134","ce", "cae", "jdifa", "jdfid", 123L));
        list.add(new Logs("3","cet", "djifand", "jdifa", "jdfid", 99L));
        list.add(new Logs("4","egge", "djifand", "jdifa", "jdfid", 111L));
        list.add(new Logs("15","chen", "djifand", "jdifa", "jdfid", 59L));
        list.add(new Logs("6","chen2", "cae", "jdifa", "jdfid", 123L));
        list.add(new Logs("87","cet", "djifand", "jdifa", "jdfid", 213L));
        list.add(new Logs("8","egge", "djifand", "jdifa", "jdfid", 201L));
        list.add(new Logs("9","egge2", "djifand", "jdifa", "jdfid", 269L));
        list.add(new Logs("10","ce", "cae", "jdifa", "jdfid", 121L));
        list.add(new Logs("11","chen3", "djifand", "jdifa", "jdfid", 1123L));
        list.add(new Logs("5","cet2", "djifand", "jdifa", "jdfid", 12L));

        System.out.println("---- 排序前的输出  ----- ");
        for (Logs logs : list) {
            System.out.println("数据: "+logs);
        }
        System.out.println("---- 排序后的结果  ----- ");
        List<Logs> search = search(list);

        for (Logs logs : search) {
            System.out.println("-->"+logs);
        }

    }


     // 方式1: 降序排列
     public List<Logs> search(List<Logs> logsList){
        Collections.sort(logsList, new Comparator<Logs>() {
            @Override
            public int compare(Logs o1, Logs o2) {
                if ((o1.getTimes() > o2.getTimes())){
                    return -1;
                }
                if (o1.getTimes() == o2.getTimes()){
                    return 0;
                }
                return 1;
            }
        });
        return logsList;
    }

     // 方式2: 升序排列
     public List<Logs> search(List<Logs> logsList){
        Collections.sort(logsList, new Comparator<Logs>() {
            @Override
            public int compare(Logs o1, Logs o2) {
                if ((o1.getTimes() > o2.getTimes())){
                    return 1;
                }
                if (o1.getTimes() == o2.getTimes()){
                    return 0;
                }
                return -1;
            }
        });
        return logsList;
    }
    // 方式3: 降序排列
    public List<Logs> search(List<Logs> logsList){
        Collections.sort(logsList, new Comparator<Logs>() {
            @Override
            public int compare(Logs o1, Logs o2) {
                return -o1.getTimes().compareTo(o2.getTimes());
            }
        });
        return logsList;
    }

    // 方式4: 升序排列
    public List<Logs> search(List<Logs> logsList){
        Collections.sort(logsList, new Comparator<Logs>() {
            @Override
            public int compare(Logs o1, Logs o2) {
                return o1.getTimes().compareTo(o2.getTimes());
            }
        });
        return logsList;
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java的Collections.sort()方法和自定义的Comparator来对List对象的某个字段进行文首字母或者数字排序。下面是一个示例代码: ```java import java.text.Collator; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Locale; public class SortList { public static void main(String[] args) { List<Person> personList = // 获取Person对象List集合 // 按照name字段进行文首字母排序 Collections.sort(personList, new Comparator<Person>() { @Override public int compare(Person p1, Person p2) { Comparator<Object> com = Collator.getInstance(Locale.CHINA); return com.compare(p1.getName(), p2.getName()); } }); // 按照age字段进行数字排序 Collections.sort(personList, new Comparator<Person>() { @Override public int compare(Person p1, Person p2) { return Integer.compare(p1.getAge(), p2.getAge()); } }); } // Person类,只是用来示例的一个类 private static class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } } ``` 在示例代码,我们通过实现Comparator接口来定义两种排序方式,一种是按照name字段进行文首字母排序,另一种是按照age字段进行数字排序。其,在按照name字段进行排序时,我们使用了Java的Collator类来进行文首字母排序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值