Я выполнил упражнение по программированию, а затем проверил ответы других людей. Я нашел тот, который мне трудно понять.
Упражнение: «Если задана строка из заглавных букв, например, ABC, вернуть количество пропущенных букв» *
ABC, returns 0
ABD returns 1, because C is missing
BCF returns 3, because A, D and E are missing.
import java.util.function.IntBinaryOperator;
public class TrainInspector {
static class Op implements IntBinaryOperator {
int prev = 'A';
@Override
public int applyAsInt(int left, int right) {
left += right - prev - 1;
prev = right;
return left;
}
}
public static int countMissingCarriages(String train) {
if ( train == null || train.isEmpty() ) return 0;
return train.chars().reduce(1, new Op());
}
}
Я понимаю, что сокращение дает нам int из заданных параметров. Однако я не понимаю, как applyAsInt работает автоматически при создании нового IntBinaryOperator.
Я прочитал:
http://www.java2s.com/Tutorials/Java/java.util.function/IntBinaryOperator/index.htm
https://www.geeksforgeeks.org/stream-reduce-java-examples/