考虑以下模型类:
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上的迭代,那就太好了!谢谢
答案 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);