Добавить один атрибут из коллекции объектов в другую коллекцию - PullRequest
0 голосов
/ 14 мая 2019

Учитывая следующий класс модели:

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 Ответ

1 голос
/ 14 мая 2019

Вы можете избежать пропуска явным образом с потоком, но внутри него, конечно, повторяется:

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);
...