stream的min,max,findFirst,findAny操作,我们先看下函数的定义

Optional<T> min(Comparator<? super T> comparator);  
  
    Optional<T> max(Comparator<? super T> comparator);
    
    Optional<T> findFirst();  
  
    Optional<T> findAny();
这4个函数,都是返回的Optional对象,关于这个对象,如果有不清楚的,后期我们会做详细的介绍,现在只需要知道,这个类是对null做处理的,就可以了;

通过函数的定义,我们其实,已经可以看到,这4个函数的作用了,min和max传入的是一个Comparator这个是一个对比接口,那么返回就是根据比较的结果,取到的集合里面,最大的值,和最小的值;

findFirst和findAny,通过名字,就可以看到,对这个集合的流,做一系列的中间操作后,可以调用findFirst,返回集合的第一个对象,findAny返回这个集合中,取到的任何一个对象;通过这样的描述,我们也可以知道,在串行的流中,findAny和findFirst返回的,都是第一个对象;而在并行的流中,findAny返回的是最快处理完的那个线程的数据,所以说,在并行操作中,对数据没有顺序上的要求,那么findAny的效率会比findFirst要快的;下面,我们通过案例,介绍这几个的用法;

List<String> strs = Arrays.asList("d", "b", "a", "c", "a");
        Optional<String> min = strs.stream().min(Comparator.comparing(Function.identity()));
        Optional<String> max = strs.stream().max((o1, o2) -> o1.compareTo(o2));
        System.out.println(String.format("min:%s; max:%s", min.get(), max.get()));// min:a; max:d
 
        Optional<String> aa = strs.stream().filter(str -> !str.equals("a")).findFirst();
        Optional<String> bb = strs.stream().filter(str -> !str.equals("a")).findAny();
 
        Optional<String> aa1 = strs.parallelStream().filter(str -> !str.equals("a")).findFirst();
        Optional<String> bb1 = strs.parallelStream().filter(str -> !str.equals("a")).findAny();
 
        System.out.println(aa.get() + "===" + bb.get());// d===d
        System.out.println(aa1.get() + "===" + bb1.get());// d===b or d===c
可以看到在min和max中,两种不同的写法,Function.identity(),表示当前对象String本身,如果集合里,是其他的实体类对象,那么可以根据实体类对象里的具体成员进行对象

后面的findFirst和findAny也都在串行和并行中,都有解释;最后Optional的get方法,是取到这个对象,这里的是String,取出来的就是字符串
--------------------- 
版权声明:本文为CSDN博主「树上的疯子^」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xingxiupaioxue/article/details/85266463

java8 求list最大值相关推荐

  1. MySQL各部门求最值_mysql 求分组最大值的十个解法

    mysql 求分组最大值的十个解法 发布时间:2020-08-08 23:32:28 来源:51CTO 阅读:1383 作者:努力的C "How to solve the same prob ...

  2. 遗传算法求函数最大值实验_小知识:什么是遗传算法

    1 什么是遗传算法 遗传算法(GeneticAlgorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法. 其主要特点是 ...

  3. PTA 最大和最小 (10 分)请使用指针法(间接访问)编写程序,程序的功能是从键盘输入 10 个数,求其最大值和最小值的差。

    请使用指针法(间接访问)编写程序,程序的功能是从键盘输入 10 个数,求其最大值和最小值的差. 输入格式: 输入10个整数 输出格式: 无 输入样例: 1 2 3 4 5 6 7 8 9 10 输出样 ...

  4. 导数求函数最大值和最小值习题

    前置知识:导数求函数最大值和最小值 例1 f(x)=∣x2−3x+2∣f(x)=|x^2-3x+2|f(x)=∣x2−3x+2∣,求f(x)f(x)f(x)在[−10,10][-10,10][−10, ...

  5. 用标准遗传算法求函数最大值

    题:用标准遗传算法求函数f(x)=x+10sin(5x)+7cos(4x)的最大值,其中x的取值范围为[0,10].只是一个有多个局部极值的函数 仿真过程: (1)初始化种群数目NP=50,染色体二进 ...

  6. Python遗传算法求一元函数最大值

    Python遗传算法求一元函数最大值 前言 代码 后记 参考文献 前言 最近接触遗传算法,参考了众多例子,有些又不尽然对,所以自己边理解边修改,然后写出了下面这堆传说中的屎山... PS1:遗传算法原 ...

  7. 将遗传算法(GA)应用于指定的函数 f(x) = x*sin(x)+1,x∈[0, 2л],求其最大值和最小值

    一.实验项目: 遗传算法优化 二.实验目的: 理解并掌握遗传算法的基本思想.特点,能够实现基本的遗传算法,并利用遗传算法进行函数优化 三.实验内容: 1.编程实现遗传算法,并验证算法的正确性 2.设置 ...

  8. c语言求三个数最值非函数,C语言编程:从键盘任意输入三个数,编写求其最大值、最小值的函数,用指针作函数参数实现。...

    www.shufadashi.com防采集. C语言编程:从键盘任意输入三个数,编写求其最大值.最小值的函数,用指针作函数参数实现.. #includevoid maxfunction(int*);v ...

  9. 求个最大值(技巧+二分转化)

    求个最大值 时间限制: 1 Sec  内存限制: 128 MB 提交: 267  解决: 52 [提交][状态][讨论版] 题目描述 给出 n(1 <= n <= 200000)个数字 a ...

  10. 斐波那契法(Faboncci Method)求函数最大值的Python程序

    斐波那契法(Fibonacci method)又称斐波那契分数法,是一种一维搜索的区间消去法(区间消去法(interval elimination method)求单变量函数无约束极值的较实用的一类直 ...

最新文章

  1. Docker常用命令汇总
  2. 如何使用:before和:after伪元素?
  3. C# Serializable(序列化)
  4. 「Python-Bug」matplotlib画图时报错Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
  5. mysql索引及优化
  6. Excel生成Sql语句 格式如:=字符串1A2字符串2C2字符串3
  7. LeetCode 40 组合总和 II
  8. spring中使用scala的maven打包配置
  9. linux zip包解压乱码
  10. Times33算法与最快的Hash表
  11. hibernate中查询方式(一):
  12. 脱式计算机在线使用,脱式计算练习题.doc
  13. fceux模拟器linux,FCEUX模拟器
  14. 网络附加存储(NAS)
  15. matlab分栏画图,Tkinter编程应知应会(19)-分栏窗口控件PanedWindow
  16. 山东理工acm非专业-顺序结构
  17. 查杀病毒实战----------------》ddg.223 and AnXQV
  18. Zookeeper学习笔记2-------group创建、查询、删除
  19. Win7/R2 原生VHD 启动 详解
  20. LDO + 稳压管的扩压电路试用笔记

热门文章

  1. 情感分析入门[2]-一些数学工具
  2. Eigen中的map
  3. 微信小程序学习笔记(阶段一)
  4. 【自动化__持续集成】___java___猜数字
  5. 数组越界也可以这么巧~~~
  6. [Pa2013]Iloczyn
  7. poi 和jxl导出excel(2)
  8. 新闻简报(7/18)
  9. Webpack笔记(三)——一款破产版脚手架的开发
  10. Python学习笔记001——Linux