【JAVA 8】 List 使用Lambda表达式操作对象字段进行升序、降序

群晖Web Station实战:从零搭建个人静态导航站 本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。 阅读详情

总结

使用Lambda表达式轻松对集合进行排序
1、需要排序的对象implements Comparable 接口,并重写compareTo方法指明默认排序的字段
2、使用java 8的API轻松实现对List的排序

代码中也涉及了一些java 8的语法
嘻嘻,对新语法我也不熟悉

Main

public static void main(String[] args) {
    // 初始化集合
    List<User> userList = new ArrayList<User>();
    Random random = new Random();
    for (int i = 0; i < 15; i++) {
        userList.add(new User(
                random.nextInt(100),
                "user" + i,
                new Date(System.currentTimeMillis() - random.nextInt(100))));
    }
    // 原集合
    System.out.println("------userList------");
    userList.forEach((user) -> {
        System.out.println(user);
    });

    // 升序
    System.out.println("------ascByBirthdayList------");
    List<User> ascByBirthdayList = userList.stream().sorted().collect(Collectors.toList());
    ascByBirthdayList.forEach((user) -> {
        System.out.println(user);
    });
    // 降序 --> 注意是在 ascByBirthdayList 的基础上,将 ascByBirthdayList 集合反转,更容易理解
    System.out.println("------descByBirthdayList------");
    List<User> descByBirthdayList = ascByBirthdayList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
    descByBirthdayList.forEach(user -> {
        System.out.println(user);
    });

    // 升序
    System.out.println("------ascByIdList------");
    List<User> ascByIdList = userList.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
    ascByIdList.forEach(user -> {
        System.out.println(user);
    });
    /*
        降序 --> 注意这里不能在 ascByIdList 的基础上,将 ascByIdList 集合反转

        如果这里仅仅使用 ascByIdList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
        那么得到的结果和 descByBirthdayList 是一致的, 因为没有指明排序的字段,默认是按birthday来排序的
     */
    System.out.println("------descByIdList------");
    List<User> descByIdList = userList.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
    descByIdList.forEach(user -> {
        System.out.println(user);
    });

}

输出结果

------userList------
User{id=79, name='user0', birthday=1548384367374}
User{id=29, name='user1', birthday=1548384367339}
User{id=96, name='user2', birthday=1548384367401}
User{id=82, name='user3', birthday=1548384367375}
User{id=76, name='user4', birthday=1548384367352}
User{id=60, name='user5', birthday=1548384367385}
User{id=64, name='user6', birthday=1548384367313}
User{id=38, name='user7', birthday=1548384367352}
User{id=52, name='user8', birthday=1548384367308}
User{id=4, name='user9', birthday=1548384367333}
------ascByBirthdayList------
User{id=52, name='user8', birthday=1548384367308}
User{id=64, name='user6', birthday=1548384367313}
User{id=4, name='user9', birthday=1548384367333}
User{id=29, name='user1', birthday=1548384367339}
User{id=76, name='user4', birthday=1548384367352}
User{id=38, name='user7', birthday=1548384367352}
User{id=79, name='user0', birthday=1548384367374}
User{id=82, name='user3', birthday=1548384367375}
User{id=60, name='user5', birthday=1548384367385}
User{id=96, name='user2', birthday=1548384367401}
------descByBirthdayList------
User{id=96, name='user2', birthday=1548384367401}
User{id=60, name='user5', birthday=1548384367385}
User{id=82, name='user3', birthday=1548384367375}
User{id=79, name='user0', birthday=1548384367374}
User{id=76, name='user4', birthday=1548384367352}
User{id=38, name='user7', birthday=1548384367352}
User{id=29, name='user1', birthday=1548384367339}
User{id=4, name='user9', birthday=1548384367333}
User{id=64, name='user6', birthday=1548384367313}
User{id=52, name='user8', birthday=1548384367308}
------ascByIdList------
User{id=4, name='user9', birthday=1548384367333}
User{id=29, name='user1', birthday=1548384367339}
User{id=38, name='user7', birthday=1548384367352}
User{id=52, name='user8', birthday=1548384367308}
User{id=60, name='user5', birthday=1548384367385}
User{id=64, name='user6', birthday=1548384367313}
User{id=76, name='user4', birthday=1548384367352}
User{id=79, name='user0', birthday=1548384367374}
User{id=82, name='user3', birthday=1548384367375}
User{id=96, name='user2', birthday=1548384367401}
------descByIdList------
User{id=96, name='user2', birthday=1548384367401}
User{id=82, name='user3', birthday=1548384367375}
User{id=79, name='user0', birthday=1548384367374}
User{id=76, name='user4', birthday=1548384367352}
User{id=64, name='user6', birthday=1548384367313}
User{id=60, name='user5', birthday=1548384367385}
User{id=52, name='user8', birthday=1548384367308}
User{id=38, name='user7', birthday=1548384367352}
User{id=29, name='user1', birthday=1548384367339}
User{id=4, name='user9', birthday=1548384367333}

User 类

/**
 * 1、实现Comparable接口
 * 2、重写compareTo方法 默认按birthday排序
 */
public class User implements Comparable<User> {

    private Integer id;
    private String name;
    private Date birthday;

    public User() {
    }

    public User(Integer id, String name, Date birthday) {
        this.id = id;
        this.name = name;
        this.birthday = birthday;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public int compareTo(User o) {
        return birthday.compareTo(o.getBirthday());
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", birthday=" + birthday.getTime() +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return id.equals(user.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}
Python爬虫实战:亚马逊中国模拟登录与二次验证全解析(2026最新版) 在数据驱动的商业时代,亚马逊作为全球最大的电商平台,其商品数据、价格波动、评论信息、库存状态等对市场分析、竞品研究、价格监控具有极高的价值。然而,亚马逊的反爬虫机制堪称行业标杆——从请求指纹校验、动态令牌、行为分析到二次验证(2FA),层层设防。本篇文章将带你从零开始,使用2026年最新的Python技术栈,完整实现亚马逊中国(z.cn)的模拟登录,并攻克二次验证难题。郑重声明:本文仅限技术研究与个人学习用途,严禁用于批量抓取、价格劫持、账户爆破等违法违规行为。 阅读详情

相关推荐

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4724

List集合排序(Lambda表达式)

1.降序: ArrayList&lt;Integer&gt; list=new ArrayList&lt;&gt;();         list.add(3);list.add(1);list.add(4);list.add(-1);         //降序排列         list.sort((x,y)-&gt;y-x); 2.升序: Array...

fz13768884254的博客 5857

PVT(Process Voltage Temperature)

芯片PVT

网始如芯个人博客 3万+

Java中使用Lambda表达式对集合排序

Lambda中比较器Comparator的使用, Lambda中比较器Comparator的使用

记录分享编程与冲浪知识 1万+

保姆级教程:用再生龙Clonezilla Live给Ubuntu系统做全盘备份与恢复(含BIOS设置避坑)

本文提供了一份详细的Clonezilla Live教程,指导Ubuntu用户如何轻松完成全盘备份与恢复。从启动盘制作、BIOS设置避坑到备份参数解析和恢复操作,涵盖了所有关键步骤和常见问题解决方案,帮助用户高效保护系统数据。

weixin_42116058的博客 637

点云处理工具——pclpy安装

pclpy介绍及详细安装过程 文章目录pclpy简介下载:安装测试 pclpy简介 pclpy是点云库(PCL)的Python绑定。使用CppHeaderParser和pybind11从头文件生成。 这个库正在积极开发中,api可能会发生变化。所包含的模块确实可以工作,但测试还不完整。目前只支持Windows和python 3.6 x64。 许多其他python库尝试绑定PCL。最流行的是python-pcl,它使用Cython。虽然Cython非常强大,但绑定c++模板并不是它的强项(PCL大量使用模.

图像处理、SLAM、PCL、OpenCV爱好者 1万+

lambda表达式之list排序

lambda表达式常用的list排序 import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import static java.util.Comparator.comparing; public class LambdaTest { ...

mr_xiyue的博客 3230

win11系统ping另一台电脑上VMware虚拟机的IP

我是用了两台电脑,所以刚才遇到一个问题就是两台电脑的IP 在同一局域网内ping不通。于是就找了很多资料,经过坚强的绝望后终于解决了。 下开始解决问题: VMWare提供了三种工作模式:bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。 1. bridged(桥接模式)   在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚

qq_42817360的博客 3236

lambda表达式对list排序

1 背景 对一个对象list做排序,排序字段是对象的sortNum,排序前剔除掉sortNum为null的对象 定义待排序的bean public class TestBean { private Integer id; private String name; private Integer sortNum; } 2 一个排序失败的CASE list.strea...

十步杀一人-千里不留行 1万+

AXI Timer IP核使用说明

AXI Timer是提供定时技术功能的集成IP核,具有时间生成、事件捕获、产生PWM波以及产生中断的功能,下面具体讲述Timer IP核的使用说明。

weixin_43418104的博客 2486

LDRA Testbed(TBrun)软件单元测试_实例讲解(对多次调用的函数打桩)

在之前的文章《LDRA Testbed(TBrun)软件单元测试_操作指南》中,已经讲解了如何使用TBrun进行软件单元测试的基本操作步骤。本篇文章将结合实例进一步讲解被测函数中包含多次调用其他函数时,如何对其打桩来实现测试目的(详细的操作流程本文不再重述,若有不清楚的,可以结合之前的操作指南一起来看)。本文以一个被测函数作为示例,讲解了如何使用Testbed(TBrun)对涉及到多次调用其他函数的被测函数进行单元测试。本文的示例可能比较简单,但是思路、方法和流程都是通用的,希望对大家有所帮助。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1461

Lambda表达式(1)|(List集合排序)

本章节主要介绍java8的新特性Lambda表达式Comparator.comparing基于List实现根据object字段的升序,倒序,为空校验,多条件排序等。以上就是Java8新特性Lambda表达式实现集合List排序中常见的几种场景以及可能遇到的问题。后续会慢慢完善Lambda表达式的去重遍历过滤等。

Oaklkm的博客 2263

STM32实现简单的智能电梯控制

上述代码实现了一个简单的智能电梯控制器。电梯的状态包括IDLE(停止)、UP(向上移动)和DOWN(向下移动)三种状态。通过向上和向下按钮的按下,可以控制电梯移动到指定的楼层。在主循环中,不断读取当前楼层的按钮状态,并根据电梯状态决定执行的动作。具体的楼层数量和按钮的GPIO引脚可以根据实际情况进行调整。要实现简单的智能电梯控制,我们可以使用STM32微控制器来实现。

2401_85258012的博客 336

JDK8 按List中元素对象的多字段对List进行排序

利用Java8按照元素对象的多字段对List进行排序 实例对象 public class WarningRule implements Serializable { private String hour; private String content; //类型排序字段 private Integer order; public WarningRu...

大灰狼的专栏 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JDK1.8对List指定字段进行排序

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import com.wubei.demo.bean.Order; /** * List根据指定字段进行排序 * */ public class ListStreamTest...

varyall的专栏 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java8对List集合对象某个字段进行排序

1、声明一个测试对象 import java.time.LocalDate; import java.util.List; import lombok.Data; @Data public class StudentInfo{ //名称 private String name; //性别 true男 false女 private Boolean gender; //年龄 private Integer age; //身高 pri.

Romantic_321的博客 2万+

对 List<Map> 结构实现多字段排序

JAVA8 可以用 Lambda 表达式对 List 进行排序,但是只适用于List 中为实体类对象,比如List<Car>,其中Car为汽车类,这类型排序网上很多,一搜就能找到,就不说明了。 但是经常遇到List<? extends Map> 类型的结构该如何排序呢?下面进入正题。 案例: 在 List 中存入 Map,其中 Map 存入两个属性:roomNo(房间号)、time(时间)。 排序规则:先按照roomNo进行升序排列,如果 roomNo 一致再按照 ti...

river_walker的博客 4546

java用sort降序,Java List的sort()方法改写compare()实现升序,降序,倒序的案例

本文旨在通过重写Comparator接口的compare()方法实现对List的升序、降序、倒序排序。首先明确一点:compare(Integer o1, Integer o2){}中,o1代表的是List容器中的后一个元素,o2代表的是List容器中的前一个元素!通过以下例子可以清晰了解这一点:public static void main(String[] args) {List list =...

weixin_35964171的博客 2399

lambda表达式对LIST对象多个字段进行排序

Student.java public class Student { private Long id; private String name; private String age; private Date birthday; public Student() { } public Student(Long id, String name, String age) { this.id = id; this.name = name; this.age = age; }

qq_40312909的博客 4902

List根据对象的两个字段进行排序,并且有一个倒序

list 排序涉及的接口 Comparator, 具体实现代码如下,以Apple类为例 public class Test { public static void main(String [] args){ List<Apple> apples = new ArrayList<>(); Comparator<Apple> byName = Comparator.comparing(Apple::getName);

梦想不会灭 4102

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)

Java实际开发中list.sort集合排序详解之多条件排序、分页、空值null的最常用解决方案前言一、单条件排序多条件排序分页空值处理 ❤️作者主页:温文尔雅的清欢渡 ❤️ 近期学习方向:性能调优 ❤️欢迎 点赞 ???? 收藏 ⭐ 留言 ???? 关注 ✌ 私聊我 前言 工作中,会遇见对list对象进行排序的情况。 JAVA8-用lamda表达式和增强版Comparator进行排序 List<Project> list = projectMapper.queryProject

weixin_46460843的博客 1万+

java8利用流和lambda表达式对list遍历处理

java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。 优点: (1) 简洁,跟之前的传统写法对比,能少写不少代码; (2) 易并行计算。尤其适用于遍历结果,循环计算数值或者赋值的时候非常方便。 缺点:(1) debug调试不方便; (2) 在非并行时,效率并没有提高(未测试) 使用总结 1.forEach() list.forEach(item->{ //执行逻辑 //item.setName(“测试”); //item.getName(); }

冰夜翎博客 5122

jdk8 新特性之 List 排序

一、排序示例 升序–> 从小到大 降序–> 从大到小 age --> 排序字段 jdk8 -> Lambda 循环打印println -> list.forEach(System.out::println); 1、jdk8 -> 之前的排序(升序) Collections.sort(list, new Comparator<User>() { @Override public int com

ws - 兮的博客空间 7826

Java lamda对List<JSONObject>里多个动态属性字段进行动态的降序或者升序

要对List中的多个属性字段进行动态的升序或降序排序,可以根据需要使用Comparator.comparing()方法和Comparator.reverseOrder()方法,运用lambda表达式动态指定属性字段和排序顺序

cainiaobulan的博客 2495

List对象子对象的字段或List对象字段进行排序

对List对象中的子对象的某个字段进行排序 首先初始化数据: Student student1 = new Student("1","2",90,new User("1","2",10,"11"),""); Student student2 = new Student("2","3",840,new User("4","2",10,"11"),""); Student student3 = new Student("3","4",80,new User("3","2",10,

vivi_nini的博客 477
上一篇: 【站在微笑的肩上】Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
下一篇: 【Git】Git安装 + 多站点SSH Key配置
tanpenggood
博客等级 码龄9年 129粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值