当前位置: 首页 > 知识库问答 >
问题:

当调用IntBinaryOperator的新实例时,ApplyAsInt如何自动工作?

贺俊楚
2023-03-14

我完成了一个编程练习,然后我检查了其他人的答案。我发现了一个我面临着难以理解的问题。

这段话是:“给定一串大写字母,例如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

https://www.geeksforgeeks.org/stream-reduce--examples/

共有1个答案

陆宾白
2023-03-14

她是它使用applyasint()方法的方式

抽象类IntPipeline

@Override
public final int reduce(int identity, IntBinaryOperator op) {
    return evaluate(ReduceOps.makeInt(identity, op));
}

final class reduceops

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();
        }
    };
}
 类似资料:
  • 鉴于以下Mockito语句: 假设mock.method()语句将返回值传递给when(),Mockito如何为mock创建代理?我想这使用了一些CGLib的东西,但我想知道这是如何在技术上完成的。

  • 我正在尝试使用new关键字创建一个组件的新实例。组件类有另一个类的自动布线。在第一类中,它有一个调用第二类的方法。代码如下: First.java 第二Java语言 一个pplication.java 我能够使用依赖注入来训练解决方案。我只是想这样做。 提亚

  • 假设我有以下代码行, 我的代码为: 现在发生的情况是,当编译器到达}catch(final SQLException se){时,它没有转到它的catch主体,只是脱离了,不知道为什么吗?

  • 这就是我的研究过程开始的地方。 在做了一些调试之后,我发现FileReader扩展了InputStreamReader。在FileReader类中,此构造函数调用 它创建FileInputStream类的对象。FileInputStream扩展了InputStream,后者实现了可关闭的接口。 提前谢了。

  • 我是Android Studio的新手,我一直在寻找答案,但不幸的是,我无法做到。我在创建新时遇到问题 我的Android Studio和我之前观看的视频的对比: 我已经试过右键单击另一张照片上的确切内容,并在每个文件夹中的任何位置单击鼠标右键,但仍然找不到新的

  • 本文向大家介绍Android如何实现APP自动更新,包括了Android如何实现APP自动更新的使用技巧和注意事项,需要的朋友参考一下 先来看看要实现的效果图: 对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP到各大应用市场的工作量就已经很大了,好不容易我们把APP都上传完