Java 8 将 BiFunction 应用于两个不同对象的列表

标签 java collections java-8 java-stream

<分区>

我需要知道如何申请 BiFunction到两个不同对象的列表

List<A> listA;
List<B> listB;

private BiFunction<A,B,C> biFunction=new BiFunction<A,B,C>() {
    @Override
    public C apply(A a, B b) {
        C c=new C();

        return c;
    }
};

我需要一个 List<C>为此我必须使用 biFunctionlistAlistB . 我不知道如何在 Java 8 中执行此操作,我知道的唯一方法是:

List<C> listC=new ArrayList<>();
        for(int i=0;i<listA.size();i++)
            listC.add(biFunction.apply(listA.get(i),listB.get(i)));

显然 listAlistB大小相同。
这是一个糟糕的解决方案,请问您能提出更好的方法吗?

最佳答案

据我所知,不使用外部库的最干净的方法是:

List<A> listA;
List<B> listB;

BiFunction<A, B, C> biFunction = (a, b) -> {
    C c = new C();
    return c;
};

List<C> listC = IntStream.range(0, listA.size())
        .mapToObj(i -> biFunction.apply(listA.get(i), listB.get(i)))
        .collect(Collectors.toList());

关于Java 8 将 BiFunction 应用于两个不同对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057262/

相关文章:

java - Spring Security tokenRepository CSRF 设置 p :cookieHttpOnly ="false" getting error

java - 小程序安全设置?

java - 仅使用一个 ImageView 的 View Flipper

java - 如何在没有等于/哈希码的 List<MyObject> 中删除重复的对象?

java - 在 Java 8 中没有获得正确的时区?

java - 使用流计算无穷和

java - 基于另一个列表中的值组合的流过滤器列表

java - isEvenSubset 未返回 1

c# - 不区分大小写的列表

database - 如何在 Appcelerator 中输出 SUM SQL 查询的结果?