将对象集合中的一个属性添加到另一集合中

时间:2019-05-14 14:42:00

标签: java object arraylist collections iterator

考虑以下模型类:

class A{
    String a;
    int b;
}

我将其用作参数之一,例如:

 class B{
      public static ArrayList<String> listOfAs;
      public void abc(Collection<A> collectionOfA){
      //I want a best way to create a collection of attribute 'a'.
      // I want listOfAs to be populated with the collection of a
      }
 }

如果可以跳过collectionOfA上的迭代,那就太好了!谢谢

1 个答案:

答案 0 :(得分:1)

您可以避免显式跳过流,但是在后台进行迭代当然是这样:

listOfAs = collectionOfA.stream().map(A::getA).collect(toList());

请注意,它需要定义一个公共String getA()方法并为该字段定义一个List而不是一个ArrayList,这是一个好习惯。

如果您确实需要将ArrayList保留为声明的字段,您仍然可以这样做:

listOfAs = collectionOfA.stream().map(A::getA).collect(toCollection(ArrayList::new);

请注意,如果应该更新列表而不只是覆盖列表,则可以使用addAll()

List<String> list = collectionOfA.stream().map(A::getA).collect(toList());
listOfAs.addAll(list);