CollectorpartitioningBy()方法是java.util.stream.Collectors類的預定義方法,該類用於根據給定謂詞對對象(或元素集)流進行分區。存在兩種方法的重載變體。一個僅將謂詞作為參數,而另一個將謂詞和Collector實例作為參數。
partitioningBy(Predicate<? super T> predicate)
用法:
public static <T> Collector<T, ?, Map<Boolean, List<T>>> partitioningBy(Predicate<? super T> predicate)
其中:
- 接口Collector<T,A,R>:一種可變的歸約運算,它將輸入元素累積到一個可變結果容器中,在處理完所有輸入元素之後,可以有選擇地將累積的結果轉換為最終表示形式。還原操作可以順序或並行執行。
- T:歸約運算的輸入元素的類型。
- A:歸約運算的可變累積類型。
- R:歸約運算的結果類型。
- Map <布爾值,列表<T >>:包含輸出的映射。鍵是布爾值(true或false),相應的值是包含T類型元素的列表。
參數:此方法采用強製性參數謂詞,該謂詞是類型T的謂詞接口的實例。
返回值:此方法返回實現分區操作的Collector。
下麵是一個示例來說明partitioningBy()方法:
程序:
// Java code to show the implementation of
// Collectors partitioningBy() function
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Gfg {
// Driver code
public static void main(String[] args)
{
// creating an Integer stream
Stream<Integer>
s = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// using Collectors partitioningBy()
// method to split the stream of elements into
// 2 parts, greater than 3 and less than 3.
Map<Boolean, List<Integer> >
map = s.collect(
Collectors.partitioningBy(num -> num > 3));
// Displaying the result as a map
// true if greater than 3, false otherwise
System.out.println("Elements in stream "
+ "partitioned by "
+ "less than equal to 3:\n"
+ map);
}
}
Elements in stream partitioned by less than equal to 3: {false=[1, 2, 3], true=[4, 5, 6, 7, 8, 9, 10]}
partitioningBy(Predicate<? super T>predicate, Collector<? super T, A, D> downstream)
用法:
public static <T> Collector<T, ?, Map<Boolean, List<T>>> partitioningBy(Predicate<? super T>predicate, Collector<? super T, A, D> downstream)
其中:
- 接口Collector<T,A,R>:一種可變的歸約運算,它將輸入元素累積到一個可變結果容器中,在處理完所有輸入元素之後,可以有選擇地將累積的結果轉換為最終表示形式。還原操作可以順序或並行執行。
- T:歸約運算的輸入元素的類型。
- A:歸約運算的可變累積類型。
- R:歸約運算的結果類型。
- Map <布爾值,列表<T >>:包含輸出的映射。鍵是布爾值(true或false),相應的值是包含T類型元素的列表。
參數:此方法采用兩個參數:一個謂詞(一個T類型的謂詞接口的實例)和一個用於實現“downstream reduction”並產生輸出的Collector。
返回值:此方法返回實現分區操作的Collector。
下麵是一個示例,說明partitioningBy()方法的類型2:
// Java code to show the implementation of
// Collectors partitioningBy() function
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class ArraytoArrayList {
// Driver code
public static void main(String[] args)
{
// creating an Integer stream
Stream<Integer>
s = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Using Collectors.counting() method
// to count the number of elements in
// the 2 partitions
Map<Boolean, Long>
map = s.collect(
Collectors.partitioningBy(
num -> (num > 3), Collectors.counting()));
// Displaying the result as a map
// true if greater than 3, false otherwise
System.out.println("Elements in stream "
+ "partitioned by "
+ "less than equal to 3:\n"
+ map);
}
}
Elements in stream partitioned by less than equal to 3: {false=3, true=7}
相關用法
- Java Collectors groupingBy()用法及代碼示例
- Java Collectors collectingAndThen()用法及代碼示例
- Java Collectors toMap()用法及代碼示例
- Java Collectors toList()用法及代碼示例
- Java 8 Collectors counting()用法及代碼示例
- Java 8 Collectors averagingInt()用法及代碼示例
- Java Collectors averagingDouble()用法及代碼示例
- Java Collectors toSet()用法及代碼示例
- Java Collectors averagingLong(ToLongFunction mapper)用法及代碼示例
- Java Collectors maxBy(Comparator comparator)用法及代碼示例
- Java Collectors minBy(Comparator comparator)用法及代碼示例
- Java Java lang.Long.numberOfTrailingZeros()用法及代碼示例
注:本文由純淨天空篩選整理自SouravAChowdhury_97大神的英文原創作品 Collectors partitioningBy() method in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。