CollectormaxBy(Comparator <?super T>comparator)用于根据作为参数传递的comparator查找元素。它返回一个Collector,该Collector根据给定的Comparator(描述为Optional <T>)生成最大元素。
用法:
public static <T> Collector<T, ?, Optional<T>> maxBy(Comparator<? super T> comparator)
其中使用的术语如下:
- 接口Collector<T,A,R>:一种可变的归约运算,它将输入元素累积到一个可变结果容器中,在处理完所有输入元素之后,可以有选择地将累积的结果转换为最终表示形式。还原操作可以顺序或并行执行。
- T:归约运算的输入元素的类型。
- A:归约运算的可变累积类型。
- R:归约运算的结果类型。
- Optional: 可以包含或不包含非null值的容器对象。如果存在值,则isPresent()将返回true,而get()将返回该值。
- comparator:比较函数,对某些对象集合施加总排序。comparator可以传递给排序方法,以实现对排序顺序的精确控制。comparator还可以用于控制某些数据结构(例如排序的集合或排序的Map)的顺序,或为没有自然顺序的对象集合提供排序。
参数:此方法采用Comparator类型的参数comparator,该comparator是一种比较函数,对某些对象集合施加总排序。comparator可以传递给排序方法,以实现对排序顺序的精确控制。comparator还可以用于控制某些数据结构(例如排序的集合或排序的Map)的顺序,或为没有自然顺序的对象集合提供排序。
返回值:此方法返回一个Collector,该Collector根据传递的comparator产生最大值。
下面是一些示例来说明maxBy()的实现:
程序1:
// Java code to show the implementation of
// Collectors maxBy(Comparator comparator) function
import java.util.Comparator;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class GFG {
// Driver code
public static void main(String[] args)
{
// creating a Stream of strings
Stream<String> s = Stream.of("2", "3", "4", "5");
// using Collectors maxBy(Comparator comparator)
// and finding the maximum element
// in reverse order
Optional<String> obj = s
.collect(Collectors
.maxBy(Comparator
.reverseOrder()));
// if present, print the element
// else print the message
if (obj.isPresent()) {
System.out.println(obj.get());
}
else {
System.out.println("no value");
}
}
}
输出:
2
范例2:
// Java code to show the implementation of
// Collectors maxBy(Comparator comparator) function
import java.util.Comparator;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class GFG {
// Driver code
public static void main(String[] args)
{
// creating a Stream of strings
Stream<String> s = Stream.of();
// using Collectors maxBy(Comparator comparator)
// and finding the maximum element
// in reverse order
Optional<String> obj = s
.collect(Collectors
.maxBy(Comparator
.reverseOrder()));
// if present, print the element
// else print the message
if (obj.isPresent()) {
System.out.println(obj.get());
}
else {
System.out.println("no value");
}
}
}
输出:
no value
相关用法
- Java Collectors minBy(Comparator comparator)用法及代码示例
- Java 8 Collectors counting()用法及代码示例
- Java Collectors toSet()用法及代码示例
- Java 8 Collectors averagingInt()用法及代码示例
- Java Collectors averagingDouble()用法及代码示例
- Java Collectors groupingBy()用法及代码示例
- Java Collectors collectingAndThen()用法及代码示例
- Java Collectors toMap()用法及代码示例
- Java Collectors toList()用法及代码示例
- Java Stream sorted(Comparator comparator)用法及代码示例
- Java Collectors averagingLong(ToLongFunction mapper)用法及代码示例
- Java Comparator comparingInt()用法及代码示例
- Java Comparator nullsFirst()用法及代码示例
注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 Java | Collectors maxBy(Comparator comparator) with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。