2つのストリームを実行し、これらのオブジェクトを作ります

オレフィン:

私は2つのリストを持っています

List<String> a = Arrays.asList( "1" , "2" , "3" );
List<String> b = Arrays.asList( "a" , "b" , "c" );

クラス

class Obj{
   String a;
   String b;
   public Obj(String a, String b){
       this.a=a;
       this.b=b;
   }
}

私は、上記のクラスのオブジェクトにすべての要素に2つのリストを変換する必要があります。このようなものでOBJのオブジェクトのリストにその結果 -

[ Obj("1","a") , Obj("2","a") , Obj("3","a") ]

私は、私は単純にループを実行することによってそれを行うことができます知っています。

List<Obj> arrayList = new ArrayList<>();

for( int i=0; i<allAttributes.size(); i++){
    arrayList.add( new Obj(a[i],b[i]) );
}

それは、Java 8いくつかのエレガントな方法で行うことができるかどうか知りたいと思いました。

ラビンドラRanwala:

aとbのリストは同じサイズのものであることを考えると、これはトリックを行う必要があり、

List<Obj> objList = IntStream.range(0, a.size())
    .mapToObj(i -> new Obj(a.get(i), b.get(i)))
    .collect(Collectors.toList());

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=233544&siteId=1