Java Stream max() 方法详解

后端 潘老师 6个月前 (10-29) 142 ℃ (0) 扫码查看

Stream max() 方法用于根据用于比较元素的 Comparator 选择 Stream 中的最大元素。Comparator 对 Stream 元素施加一个完全排序,这可能不是自然的排序。

1.方法语法

  • 该方法采用一个非干扰的、无状态的 Comparator 来比较 stream 的元素。
  • 它返回一个描述流中最大元素的 Optional,如果流为空,则返回一个空的 Optional。
  • 如果找到的最大元素为 null,则 max() 方法将抛出 NullPointerException。
Optional<T> max(Comparator<? super T> comparator)

2.描述

  • 这是一个终端操作。因此,在该方法执行后,stream 无法再使用。
  • 根据提供的 Comparator 返回此 stream 的最大/最大元素。这是一种特殊类型的 stream 归约。
  • 该方法参数应是非干扰的、无状态的 Comparator。
  • 该方法返回描述此流最大元素的 Optional,如果流为空,则返回一个空的 Optional。
  • 如果最大的元素为 null,则可能抛出 NullPointerException。

3.Java Stream max() 示例

示例 1:使用 Lambda 表达式查找最大的元素Java 示例

使用 comparator 作为 lambda 表达式从数字流中查找最大数字。

List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8);

Optional<Integer> maxNumber = list.stream()
      .max((i, j) -> i.compareTo(j));

System.out.println(maxNumber.get()); //9

示例 2:使用 Comparator 查找最大的元素Java 示例

使用自定义 comparator 从数字流中查找最大数字。

List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8);
 
Comparator<Integer> maxComparator = new Comparator<Integer>() {
   
  @Override
  public int compare(Integer n1, Integer n2) {
    return n1.compareTo(n2);
  }
};

Optional<Integer> maxNumber = list.stream()
      .max(maxComparator);

System.out.println(maxNumber.get()); //9

版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10477.html
喜欢 (1)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】