Java 8将自定义元素添加到集合中的方法?

use*_*883 3 java lambda for-loop java-8

是否有java 8方式执行以下操作?

for(int i;i<=100;i++){
    Person person=new Person();
    person.setId(i);
    person.setName("name"+i);
    list.add(person)
}
Run Code Online (Sandbox Code Playgroud)

Tun*_*aki 7

您可以通过将每个int从0到100 映射到a中来获取人员列表Person.

List<Person> persons = IntStream.rangeClosed(0, 100).mapToObj(i -> {
    Person person = new Person();
    person.setId(i);
    person.setName("name" + i);
    return person;
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

然后,您可以将该persons列表附加到现有列表中.

IntStream.rangeClosed返回一个IntStream原语int.每一个被映射到对象PersonmapToObj并收集到与列表Collectors.toList().

如果你有一个Person获取id和名字的构造函数,它会更清晰.使用这样的构造函数,您可以编写:

List<Person> persons = IntStream.rangeClosed(0, 100)
                                .mapToObj(i -> new Person(i, "name" + i))
                                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)