Итерация по элементам List - Java 8 - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть список строк, мне нужно перебрать элементы и создать новый объект для каждого элемента в списке и добавить в родительский список, как сделать ido в Java 8, это то, что я пытался до сих пор:

List<CustomObject> parentList = new ArrayList<>();
List<String> emailList = fromSomeMethod();
emailList().stream().forEach(email -> parentList.add(new CustomObject(email)));

Я получаю сообщение об ошибке:

"переменная, используемая в лямбда-выражении, должна быть окончательной или фактически окончательной"

Есть предложения?не хочу делать это по-старому, спасибо,

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Попробуйте вот так: у вас должен быть параметризованный конструктор

            public class CustomObject {
                private String email;
                private boolean isFlag;
            //Getter setter
                public CustomObject(String email, boolean isFlag) {
                    this.email = email;
                    this.isFlag = isFlag;
                }
               public CustomObject(String email) {
            this.email = email;
        }

            }
List<CustomObject> parentList = emailList.stream().map(CustomObject::new).collect(Collectors.toList());
0 голосов
/ 28 сентября 2018

Используйте это:

static class CustomObject {
    String email;

    public CustomObject(String email) {
        this.email = email;
    }
}
private static void test4() {
    List<CustomObject> parentList = new ArrayList<>();
    List<String> emailList = Arrays.asList("aa@gmail.com", "bb@yahoo.com");
    emailList.stream()
            .map(CustomObject::new)
            .forEach(parentList::add);
}
0 голосов
/ 28 сентября 2018
  List<CustomObject> parentList = emailList().stream()
             .map(CustomObject::new)
             .collect(Collectors.toList());

Не нужно сложных вещей, просто map, что и собирать на новый List

...