/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
//My silly test predicate
Predicate<String> p = s -> s.length() > 4;
//List with test strings (even though it's called numbers...)
List
<String
> numbers
= new ArrayList
<>(List.
of("Ted",
"James",
"Bobby",
"Mark",
"Hank",
"Richard"));
//Partitioning by your first example
Map
<Boolean, List
<String
>> partitioned
= numbers.
stream() .collect(Collectors.partitioningBy(p));
//Printing the result
System.
out.
println(partitioned
);
//Partitioning with int keys
Map
<Integer, List
<String
>> partitioned2
= numbers.
stream() .
collect(Collectors.
toMap(s
-> p.
test(s
) ? 1 : 0, s
-> new ArrayList
<>(List.
of(s
)),
(list1, list2
) -> { list1.addAll(list2);
return list1;
}));
//Printing the second partition to compare it with the first one
System.
out.
println(partitioned2
); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwppbXBvcnQgamF2YS51dGlsLkxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlByZWRpY2F0ZTsKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJLy9NeSBzaWxseSB0ZXN0IHByZWRpY2F0ZQoJCVByZWRpY2F0ZTxTdHJpbmc+IHAgPSBzIC0+IHMubGVuZ3RoKCkgPiA0OwoKCQkvL0xpc3Qgd2l0aCB0ZXN0IHN0cmluZ3MgKGV2ZW4gdGhvdWdoIGl0J3MgY2FsbGVkIG51bWJlcnMuLi4pCiAgICAgICAgTGlzdDxTdHJpbmc+IG51bWJlcnMgPSBuZXcgQXJyYXlMaXN0PD4oTGlzdC5vZigiVGVkIiwgIkphbWVzIiwgIkJvYmJ5IiwgIk1hcmsiLCAiSGFuayIsICJSaWNoYXJkIikpOwoKCQkvL1BhcnRpdGlvbmluZyBieSB5b3VyIGZpcnN0IGV4YW1wbGUKICAgICAgICBNYXA8Qm9vbGVhbiwgTGlzdDxTdHJpbmc+PiBwYXJ0aXRpb25lZCA9IG51bWJlcnMuc3RyZWFtKCkKICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMucGFydGl0aW9uaW5nQnkocCkpOwoKCQkvL1ByaW50aW5nIHRoZSByZXN1bHQKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFydGl0aW9uZWQpOwoKCQkvL1BhcnRpdGlvbmluZyB3aXRoIGludCBrZXlzCiAgICAgICAgTWFwPEludGVnZXIsIExpc3Q8U3RyaW5nPj4gcGFydGl0aW9uZWQyID0gbnVtYmVycy5zdHJlYW0oKQogICAgICAgICAgICAgICAgLmNvbGxlY3QoQ29sbGVjdG9ycy50b01hcChzIC0+IHAudGVzdChzKSA/IDEgOiAwLCBzIC0+IG5ldyBBcnJheUxpc3Q8PihMaXN0Lm9mKHMpKSwgKGxpc3QxLCBsaXN0MikgLT4gewogICAgICAgICAgICAgICAgICAgIGxpc3QxLmFkZEFsbChsaXN0Mik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3QxOwogICAgICAgICAgICAgICAgfSkpOwoKCQkvL1ByaW50aW5nIHRoZSBzZWNvbmQgcGFydGl0aW9uIHRvIGNvbXBhcmUgaXQgd2l0aCB0aGUgZmlyc3Qgb25lCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcnRpdGlvbmVkMik7Cgl9Cn0=
{false=[Ted, Mark, Hank], true=[James, Bobby, Richard]}
{0=[Ted, Mark, Hank], 1=[James, Bobby, Richard]}