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 Interface用法及代碼示例
- Java Comparator nullsFirst()用法及代碼示例
注:本文由純淨天空篩選整理自Sahil_Bansall大神的英文原創作品 Java | Collectors maxBy(Comparator comparator) with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。