I have a function that creates an int stream, finds the distinct characters, sorts them and then collects them into a new list and then creates a string. Below is the function.
public static String longest(String s1, String s2) {
String s = s1 + s2;
return s.chars()
.distinct()
.sorted()
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
}
I am really struggling to work out how the collect with the StringBuilder is working, I have searched online and the Java docs but can't make any sense of it. From what I can make out, it creates a new instance of StringBuilder and just appends each character in the stream, can anyone give a better explanation? Thank you
解决方案
Argument 1: Creates your starting result (in this case, your new StringBuilder).
Argument 2: Adds an element (String) to your result (StringBuilder).
Argument 3: If you run the stream in parallel, multiple StringBuilders will be created. This is for combining these together.