作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我完成了一个编程练习,然后检查了其他人的答案。我发现了一个我很难理解的问题。
练习题是:“给定一串大写字母,例如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());
}
}
我知道 reduce 从给定的参数中为我们提供了一个 int。但是,我不明白在创建新的 IntBinaryOperator 时 applyAsInt 如何自动工作。
我已阅读:
http://www.java2s.com/Tutorials/Java/java.util.function/IntBinaryOperator/index.htm
最佳答案
她就是它使用applyAsInt()
方法的方式
@Override
public final int reduce(int identity, IntBinaryOperator op) {
return evaluate(ReduceOps.makeInt(identity, op));
}
static TerminalOp<Integer, Integer> makeInt(int identity, IntBinaryOperator operator) {
class ReducingSink implements ... {
private int state;
//...
@Override
public void accept(int t) {
state = operator.applyAsInt(state, t); // <----------
}
//...
}
return new ReduceOp<Integer, Integer, ReducingSink>(StreamShape.INT_VALUE) {
@Override
public ReducingSink makeSink() {
return new ReducingSink();
}
};
}
关于java - 当调用 IntBinaryOperator 的新实例时,ApplyAsInt 如何自动工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471447/
我完成了一个编程练习,然后检查了其他人的答案。我发现了一个我很难理解的问题。 练习题是:“给定一串大写字母,例如ABC,返回缺失字母的个数” ABC, returns 0 ABD returns 1,
我是一名优秀的程序员,十分优秀!