java中如何使用Stream流获取最大值和最小值呢?

乔欣 Java经验 发布时间:2023-07-06 14:16:19 阅读数:6444 1
下文笔者讲述Stream流的方式获取最小值和最小值的方法及示例分享,如下所示
所有的方法都拥有
    使用stream.reduce求最大值和最小值
     或
   使用stream.max()或stream.min()方法计算最大值和最小值
 
Integer求最大值和最小值---额外
   使用Collectors.summarizingInt()方式计算最大值和最小值
Long求最大值和最小值---额外
   使用Collectors.summarizingLong()方式计算最大值和最小值
Double求最大值和最小值---额外
   使用Collectors.summarizingDouble()方式计算最大值和最小值
例:stream求最大值和最小值
一、BigDecimal 求最大值和最小值
1. stream().reduce()实现
        list<BigDecimal> list = new ArrayList<>(Arrays.asList(new BigDecimal("1"), new BigDecimal("2")));
        BigDecimal max = list.stream().reduce(list.get(0), BigDecimal::max);
        BigDecimal min = list.stream().reduce(list.get(0), BigDecimal::min);
 
2. stream().max()或stream().min()实现
        List<BigDecimal> list = new ArrayList<>(Arrays.asList(new BigDecimal("1"), new BigDecimal("2")));
        BigDecimal max = list.stream().max(Comparator.comparing(x -> x)).orElse(null);
        BigDecimal min = list.stream().min(Comparator.comparing(x -> x)).orElse(null);
 
二、Integer 求最大值和最小值
1. stream().reduce()实现
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 2));
        Integer max = list.stream().reduce(list.get(0), Integer::max);
        Integer min = list.stream().reduce(list.get(0), Integer::min);
 
2. Collectors.summarizingInt()实现
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 2));
        IntSummaryStatistics intSummaryStatistics = list.stream()
     .collect(Collectors.summarizingInt(x -> x));
        Integer max = intSummaryStatistics.getMax();
        Integer min = intSummaryStatistics.getMin();
 
3. stream().max()或stream().min()实现
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 2));
        Integer max = list.stream().max(Comparator.comparing(x -> x)).orElse(null);
        Integer min = list.stream().min(Comparator.comparing(x -> x)).orElse(null);
 
三、Long 求最大值和最小值
1. stream().reduce()实现
        List<Long> list = new ArrayList<>(Arrays.asList(1L, 2L));
        Long max = list.stream().reduce(list.get(0), Long::max);
        Long min = list.stream().reduce(list.get(0), Long::min);
 
2. Collectors.summarizingLong()实现
        List<Long> list = new ArrayList<>(Arrays.asList(1L, 2L));
        LongSummaryStatistics summaryStatistics = list.stream()
        .collect(Collectors.summarizingLong(x -> x));
        Long max = summaryStatistics.getMax();
        Long min = summaryStatistics.getMin();
 
3. stream().max()或stream().min()实现
        List<Long> list = new ArrayList<>(Arrays.asList(1L, 2L));
        Long max = list.stream().max(Comparator.comparing(x -> x)).orElse(null);
        Long min = list.stream().min(Comparator.comparing(x -> x)).orElse(null);
 
四、Double 求最大值和最小值
1. stream().reduce()实现
        List<Double> list = new ArrayList<>(Arrays.asList(1d, 2d));
        Double max = list.stream().reduce(list.get(0), Double::max);
        Double min = list.stream().reduce(list.get(0), Double::min);
 
2. Collectors.summarizingLong()实现
        List<Double> list = new ArrayList<>(Arrays.asList(1d, 2d));
        DoubleSummaryStatistics summaryStatistics = list.stream()
             .collect(Collectors.summarizingDouble(x -> x));
        Double max = summaryStatistics.getMax();
        Double min = summaryStatistics.getMin();
 
3. stream().max()或stream().min()实现
        List<Double> list = new ArrayList<>(Arrays.asList(1d, 2d));
        Double max = list.stream().max(Comparator.comparing(x -> x)).orElse(null);
        Double min = list.stream().min(Comparator.comparing(x -> x)).orElse(null);
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202307/16886242207012.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者