当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Collectors maxBy(Comparator comparator)用法及代码示例


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


相关用法


注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 Java | Collectors maxBy(Comparator comparator) with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。