//对象类型stream排序List<User> users = new ArrayList<User>(){    {        add(new User("a", "1983/12/24", 36));        add(new User("a", "1993/12/24", 26));        add(new User("a", "1973/12/24", 46));        add(new User("a", "1995/12/24", 24));        add(new User("a", "1981/12/24", 38));        add(new User("a", "1991/12/24", 28));    }};

//升序List<User> ascUsers = users.stream().sorted(Comparator.comparing(User :: getAge)).collect(Collectors.toList());
//降序List<User> descUsers = users.stream().sorted(Comparator.comparing(User :: getAge).reversed()).collect(Collectors.toList());用户类:必须继承Comparable接口,否则排序调用Comparator.comparing的时候会报错,这点很重要。
public class User implements Comparable<User> {

    @NotNull    private String name;

    @Format(value="YYYY-MM-DD", message = "字符串格式不正确")    private String birthday;

    private int age;

    public User(){    }

    public User(String name, String birthday, int age){        this.name = name;        this.birthday = birthday;        this.age = age;    }

    public String getName() {        return name;    }

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

    public int getAge() {        return age;    }

    public void setAge(int age) {        this.age = age;    }

    public String getBirthday() {        return birthday;    }

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

    /**     * 两个相同类型的对象,比较多属相是否相等的时候     * 可以通过重写equals方法来实现     * @param object     * @return     */

    @Override    public boolean equals(Object object) {        if (object instanceof User) {            return this.name.equals(((User) object).getName()) && this.age == ((User) object).getAge();        } else {            return false;        }    }

    /**     * 重写 equals 就应当重写 hashcode     * 因为当两个对象hashcode 值相等,但是 equals 比较为 false,     * 那么在 HashMap 中会产生链表,影响查询性能     * @return     */    @Override    public int hashCode() {        return  this.name.hashCode() + age;    }

    @Override    public int compareTo(User user) {        return name.compareTo(user.getName());    }}
 

转载于:https://www.cnblogs.com/michaelShao/p/10893439.html

Java使用笔记之stream和sorted使用相关推荐

  1. 给大忙人看的Java核心技术笔记(8、Stream)

    流提供了数据视图,让你可以在比集合更高的概念层上指定操作.使用流只要指定做什么,而不是怎么做.将操作的调度执行留给实现. 要点: 1.迭代器使用了一种明确的遍历策略,同时也阻止了高效的并发执行 2.你 ...

  2. 【java笔记】Stream流(2):获取流的两种方法

    获取一个流通常有两种方式: ●所以的Collection集合都可以通过stream默认方法获取流 ●Stream接口的静态方法of可以获取数组对应的流 根据Collection集合获取Stream流 ...

  3. 【java笔记】Stream流(1)你知道什么叫Stream流吗?

    JDK8 中的 Stream 是对集合(Collection)对象功能的增强,它借助于lambda表达式,更优雅的表达风格,极大的提高编程效率和程序可读性.它针对于对集合对象进行各种非常便利.高效的聚 ...

  4. Java学习笔记(三十五)

    在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度.现在将跟着视频做的笔记进行整理.本篇博客是整理Java知识点的第三十五 ...

  5. Java学习笔记 2021-7-1 2021-7-8

    Java学习笔记 Stream流 1 Stream流的体验 stream流的生成操作 stream中间流操作 filter limit和skip concat和distinct sorted map和 ...

  6. java学习笔记十三

    11. 凡是继承了FilterOutputStream或FilterInputStream的类都是过滤流,也就是说他们不能直接跟目标(键盘,文件,网络等,节点流可以)数据打交道,只能包装 Intput ...

  7. 在Java 8中使用Stream API列出ZIP文件的内容

    在Java 8 java.util.zip.ZipFile配备了stream方法,该方法可以非常轻松地浏览ZIP文件条目. 在此博客文章中,我将展示许多示例,这些示例显示了我们可以如何快速浏览ZIP文 ...

  8. java skip函数_【Java必修课】图说Stream中的skip()和limit()方法及组合使用

    1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...

  9. java 新特性之 stream 流

    java 新特性之 stream 流 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在 ...

  10. Java开发笔记(八十六)通过缓冲区读写文件

    前面介绍了利用文件写入器和文件读取器来读写文件,因为FileWriter与FileReader读写的数据以字符为单位,所以这种读写文件的方式被称作"字符流I/O",其中字母I代表输 ...

最新文章

  1. 算力“竞速”,企业AI落地的当务之急
  2. 马尔科夫决策过程基本概念详解
  3. VTK:使用 vtkPolyData 结构为单元格分配颜色查找表用法实战
  4. 事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...
  5. Java8新特性总结 -5.Stream API函数式操作流元素集合
  6. ios客户端快速滚动和回弹效果的实现
  7. DJ Mix Pads 2 - Remix Version Mac - DJ混音音乐制作板
  8. 自动化部署工具Fabric简介
  9. lwm2m协议 开源服务器,LwM2M协议接入
  10. 平面设计完全手册_工业时代的平面设计
  11. Origin源码阅读笔记——RPC
  12. java开发坦克大战小游戏
  13. mybatiplus的apply_mybatis-plus入门
  14. 如何下载网页php源文件,php如何实现对各种文件下载
  15. valgrind检测内存泄漏,gperftools,memwatch和性能优化Messy_Test
  16. XJOI--三质数c++
  17. idea提交本地项目到oschina
  18. 双循环链表(C++)
  19. 液晶显示模块制作生产流程
  20. 解释计算机概念BIOS,电脑BIOS的小常识

热门文章

  1. Python下安装LDA模块,学习使用
  2. prthon序列、映射
  3. 2021-07-31mysql 登录退出
  4. c语言闰年题目程序,浙大版《C语言程序设计(第3版)》题目集 练习3-5 输出闰年...
  5. 永磁同步电机转子磁链_永磁同步电机转子初始位置检测、增量式光电编码器对位调零思路解析...
  6. FISCO BCOS源码(3)线程交互和交易的生命周期
  7. 微信小程序云开发教程-微信小程序的JS高级-全局数据读写
  8. mysql改变授权_mysql8使用grant授权修改
  9. java基础总结07-异常
  10. spring boot jpa SQL语句注意事项