📜  Java|带有示例的收集器 minBy(Comparator 比较器)(1)

📅  最后修改于: 2023-12-03 14:42:42.582000             🧑  作者: Mango

Java|带有示例的收集器 minBy(Comparator 比较器)

简介

在Java 8中,新增了一些非常方便的收集器(Collectors)来简化Stream操作。其中一个非常有用的收集器是minBy,该收集器接受一个Comparator比较器作为参数,返回Stream中根据比较器判断最小的元素。

语法
public static <T> Collector<T, ?, Optional<T>> minBy(Comparator<? super T> comparator)
示例
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> minNumber = numbers.stream().collect(Collectors.minBy(Comparator.naturalOrder()));
System.out.println("Min number is: " + minNumber.get());

运行结果:

Min number is: 1

在上述示例中,我们创建了一个包含1到5的Integer List,然后使用Stream的minBy收集器来获取这个List中最小的数。

注意

需要注意的是,如果Stream是空的,对于minBy操作,Stream.reduce()返回一个Optional.empty(),而Stream.min()则会抛出NoSuchElementException异常。因此,在使用minBy时,应该始终使用Optional类型来接收返回值。

总结

收集器minBy是一个非常实用的接口,可以帮助开发人员在Stream操作中获取到最小的元素。在实际的开发中,我们可以结合Comparator比较器来获取到最小或最大的元素,并使用Optional类型来避免空指针异常。