Take a look at your information of the Sample class and splitAsStream methodology
Given the next class
import java.util.Arrays;
import java.util.regex.Sample;
public class FooBaz {
static ultimate Sample PIPE_SPLITTER = Sample.compile(“|”);
public static void essential(String[] args) 11
public int doIt(String s) {
var a = PIPE_SPLITTER.splitAsStream(s)
.mapToInt(v -> Integer.valueOf(v))
.mapToObj(v -> new Integer[]{v % 3 == 0 ? 1 : 0, v % 5 == 0 ? 2 : 0, v})
.scale back(new Integer[]{0, 0, 0}, (i, is) -> new Integer[]{i[0] + is[0], i[1] + is[1], i[2] + is[2]});
return Arrays.stream(a).mapToInt(Integer::intValue).sum();
}
}
What’s the consequence? Select one.
A. 56 is the output.
B. 57 is the output.
C. 58 is the output.
D. 59 is the output.
E. Compilation fails.
Reply. While you see an examination query that has unreasonably complicated code, remember to examine for easy issues first. You gained’t all the time discover the reply there, but when checking the arduous stuff goes to take a very long time, it’s sensible to examine the simple stuff first. On this instance, the code doesn’t, the truth is, compile. The reason being easy: The static essential methodology makes an attempt to name the doIt methodology with none express prefix, and such an invocation can work just for a static doIt() methodology. Nevertheless, doIt() is an occasion methodology and within the absence of an express prefix, such an invocation will fail. From this you possibly can shortly decide that possibility E is right, mark that as your reply, and transfer on to the following query.
Now that you realize the proper reply, let’s make this dialogue extra attention-grabbing by pretending that the doIt() methodology was static or that an express occasion prefix was supplied for the invocation of the doIt() methodology.
First, discover that the splitAsStream methodology splits the string argument “12|11|30″ into three textual content chunks—”12”, “11”, and “30”—that are then transformed to a stream of equal primitive int values by the mapToInt operation.
◉ The splitAsStream methodology is extra direct than the extra widespread strategy of extracting gadgets from the supply textual content to an intermediate array utilizing the easy break up methodology after which making a stream from the weather of the array as a second step.
◉ The precompilation of the common expression sample makes no distinction right here, however discover that the sample is asserted as a static ultimate, slightly than being embedded within the physique of the tactic. Turning a textual common expression into the illustration that really performs sample matching is a reasonably CPU-intensive process, so it’s usually a good suggestion to rearrange {that a} sample is precompiled on this manner simply as soon as, slightly than referring to it within the string literal type in a manner which may contain it being compiled every time a loop executes that code.
◉ Be aware the character of the common expression literal. The straightforward vertical bar (or pipe) character represents an OR operation and have to be escaped. Nevertheless, a single backslash can be an try to flee the vertical bar within the parsing of the string literal, which might be not what you need. You’ll want to make a literal containing the character sequence “backslash, vertical bar.” As a result of backslash is itself the escape character, it have to be escaped, so two backslashes within the supply code make one within the binary code, which is what’s desired.
Going again to the operation of this stream, the three int values are mapped to a stream of Integer arrays, containing the next knowledge:
[1, 0, 12]
[0, 0, 11]
[1, 2, 30]
Discover that the conditional operators within the mapToObj argument will put 0 within the first array factor if the int within the stream is strictly divisible by 3 however put 1 in in any other case. The second factor of the array will likely be 0 if the int is strictly divisible by 5 however will likely be 2 in any other case. The third factor is just the int worth from the stream.
Subsequent the stream is diminished to a single Integer[] by summing values with the identical indices to supply the next consequence within the variable a:
[2, 2, 53]
Within the ultimate step, the array famous above is transformed to a stream of Integer objects, that are then transformed to primitives after which diminished to the sum of all components, producing 57 because the output. Thus, if the code had really compiled, possibility B would have been right.
Conclusion. The right reply is possibility E.
Supply: oracle.com