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

📅  最后修改于: 2022-05-13 01:55:09.346000             🧑  作者: Mango

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

收集器 minBy(Comparator< ? super T >comparator)用于根据作为参数传递的比较器查找元素。它返回一个收集器,该收集器根据给定的比较器生成最小元素,描述为Optional

句法:

public static 
     Collector> 
        minBy(Comparator comparator)

其中使用的术语如下:

  • 接口 Collector :一种可变归约操作,可将输入元素累积到可变结果容器中,在处理完所有输入元素后,可选择将累积结果转换为最终表示。归约操作可以顺序或并行执行。
    • T:归约操作的输入元素的类型。
    • A:归约操作的可变累积类型。
    • R:归约操作的结果类型。
  • 可选:一个容器对象,它可能包含也可能不包含非空值。如果存在值,isPresent() 将返回 true,而 get() 将返回该值。
  • Comparator:比较函数,它对某些对象集合进行总排序。比较器可以传递给排序方法以允许精确控制排序顺序。比较器还可用于控制某些数据结构(例如排序集或排序图)的顺序,或为不具有自然排序的对象集合提供排序。

参数:此方法采用 Comparator 类型的参数比较器,它是一个比较函数,它对某些对象集合进行总排序。比较器可以传递给排序方法以允许精确控制排序顺序。比较器还可用于控制某些数据结构(例如排序集或排序图)的顺序,或为不具有自然排序的对象集合提供排序。

返回值:此方法返回一个收集器,该收集器根据传递的比较器产生最小值。

下面是一些例子来说明 minBy() 的实现:

程序 1:使用 naturalOrder() 演示 minBy()

// Java code to show the implementation of
// Collectors minBy(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 s = Stream.of("2", "3", "4", "5");
  
        // using Collectors minBy(Comparator comparator)
        // and finding the minimum element
        // in reverse order
        Optional obj = s
                                   .collect(Collectors
                                                .minBy(Comparator
                                                           .naturalOrder()));
  
        // 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:使用 reverseOrder() 演示 minBy()

// Java code to show the implementation of
// Collectors minBy(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 s = Stream.of("2", "3", "4", "5");
  
        // using Collectors minBy(Comparator comparator)
        // and finding the minimum element
        // in reverse order
        Optional obj = s
                                   .collect(Collectors
                                                .minBy(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");
        }
    }
}
输出:
5

程序 3:在没有传递任何值时演示 minBy()。

// Java code to show the implementation of
// Collectors minBy(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 s = Stream.of();
  
        // using Collectors minBy(Comparator comparator)
        // and finding the minimum element
        // in reverse order
        Optional obj = s
                                   .collect(Collectors
                                                .minBy(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