Java / Java8 streams
Explain Java8 Collectors partitioningBy method.
Java 8 Collectors.partitioningBy method accepts a predicate and returns a Collector by partitioning the element of the stream using Predicate so it will have 2 keys at most in Map. The key of the map can be only true and false and each key's value is a list of elements.
public static <T> Collector<T,?,Map<Boolean,List<T>>> partitioningBy(Predicate<? super T> predicate)
Consider the below example. This program checks if each item of list1 exists in list2 and partition with predicate.
public class PartitioningByEx1 { public static void main(String[] args) { List<String> list1 = Arrays.asList("A", "B", "C", "D"); List<String> list2 = Arrays.asList("A", "D", "E"); list1.stream().collect(Collectors.partitioningBy(item -> list2.contains(item))) .forEach((key, val) -> System.out.println(key + "-->>" + val)); } }
Output:
false-->>[B, C] true-->>[A, D]
More Related questions...