首页 > 解决方案 > 如何使用 Java 8 使用 A 的构造函数将对象 A 的数组转换为对象 B 的数组?

问题描述

我有两个班级 A 级和 B 级。如下:

A类:

class A {

  public String a;

  public A() {

  }

  public A(final String a) {
    this.a = a;
  }
}

B类:

class B {

  private A a;

  private String b;

  public B() {

  }

  public B(final A a) {
    this.a = a;
  }
}

我将 A[] 转换为 B[] 的位置如下:

public static void main(final String[] args) {

    final A[] myA = new A[3];
    myA[0] = new A("a");
    myA[1] = new A("b");
    myA[2] = new A("c");
    
    B[] myB = new B[myA.length];

    IntStream.range(0, myA.length).forEach(propIndex->{
      myB[propIndex] = new B(myA[propIndex]);
    });

    System.out.println(myB.length);
}

有没有其他方法可以在不forEach使用索引迭代()的情况下做到这一点?toArray(B[]::new)我不必使用的东西或任何其他方式forEach

标签: javaarraysjava-8

解决方案


你可以做:

B[] myB = Arrays.stream(myA) // create a Stream<A>
                .map(B::new) // map each instance of A to instance of B
                .toArray(B[]::new); // collect to array of B

推荐阅读