list按照对象某一属性排序

借鉴博客:https://blog.csdn.net/feinifi/article/details/120302824

 

使用集合类Collections.sort()方法可对list数据排序,使用案例如下:

复制代码
public static void main(String[] args) {
        List<Person> list = new ArrayList<Person>();
        list.add(new Person(1,"jack",18, false));
        list.add(new Person(2,"paul",28, true));
        list.add(new Person(3,"zion",20, false));
        list.add(new Person(4,"jone",30, true));
        list.forEach(System.out::println);
        //利用Collections.sort方法按照年龄排序,默认升序
//        Collections.sort(list, (a, b)->{
//            return b.getAge() - a.getAge();//降序
//        });
//        System.out.println("================================");
//        list.forEach(System.out::println);
        //直接使用List集合sort方法按照姓名排序,默认字母升序
    //我改成了b-a让t排在f前面,因为业务要求true为先
list.sort((a,b)->String.valueOf(b.isFinished()).compareTo(String.valueOf(a.isFinished()))); System.out.println("================================"); list.forEach(System.out::println); }
复制代码

 

 

 

List<Map> 数据按照map里面的时间字段排序:

复制代码
public static void main(String[] args) {

//map里的time是Date类型
    Map m1 = new HashMap();
m1.put("time", DateUtil.stringToDate("2022-7-22"));

Map m2 = new HashMap();
m2.put("time", DateUtil.stringToDate("2022-3-22"));

Map m3 = new HashMap();
m3.put("time", DateUtil.stringToDate("2022-5-22"));

List<Map> list = new ArrayList<>();
list.add(m1);
list.add(m2);
list.add(m3);
list.sort((a,b)->((Date)b.get("time")).compareTo(((Date)a.get("time"))));


list.forEach(System.out::println);






}
复制代码

 

 

 

list过滤取数据,不使用for循环,过滤出来想要的list集合:

复制代码
        //========================================================================list取数据
        Person p = new Person();
        p.setName("aaa");
        p.setId(1);

       Person p2 = new Person();
        p2.setName("bbb");
        p2.setId(2);

        List<Person> pList = new ArrayList<Person>();
        pList.add(p);
        pList.add(p2);

        List<Person> ps = pList.stream().filter(a -> a.getName().equals("bbb") && a.getId() == 2).collect(Collectors.toList());

        ps.forEach(System.out::println);
复制代码

 

 

 

posted @   下课后我要去放牛  阅读(348)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2019-05-31 ELK日志系统之kibana的使用操作
2019-05-31 ELK日志系统之说说logstash的各种配置
点击右上角即可分享
微信分享提示