NCN*_*ros 108 java collections java-8 java-stream
我有一个List<Person>
.我需要List
从一个属性获得Person
.
例如,我有一个Person
班级:
class Person
{
private String name;
private String birthDate;
public String getName() {
return name;
}
public String getBirthDate() {
return birthDate;
}
Person(String name) {
this.name = name;
}
}
List<Person> personList = new ArrayList<>();
personList.add(new Person("David"));
personList.add(new Person("Joe"));
personList.add(new Person("Michel"));
personList.add(new Person("Barak"));
Run Code Online (Sandbox Code Playgroud)
我想获得Stream
API 的名称列表,如下所示:
List<String> names = personList.stream().somecode().collect(Collectors.toList());
names.stream().forEach(System.out::println);
#David
#Joe
#Michel
#Barak
Run Code Online (Sandbox Code Playgroud)
此代码不起作用:
public class Main
{
public static void main(String[] args)
{
List<Person> personList = new ArrayList<>();
Person person = new Person("????");
person.getFriends().addAll(Arrays.asList("???? 1", "???? 2", "???? 3"));
personList.add(person);
person = new Person("?????");
person.getFriends().addAll(Arrays.asList("???? 4", "???? 5", "???? 6"));
personList.add(person);
person = new Person("???????");
person.getFriends().addAll(Arrays.asList("???? 7", "???? 8", "???? 9"));
personList.add(person);
person = new Person("??????????");
person.getFriends().addAll(Arrays.asList("???? 10", "???? 11", "???? 12"));
List<String> friens = personList.stream().map(e->e.getFriends()).collect(Collectors.toList());
friends.stream().forEach(System.out::println);
//???? 1
//???? 2
//???? 3
//???? 4
//...
}
}
class Person
{
String name;
List<String> friends;
Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public List<String> getFriends() {
return friends;
}
}
Run Code Online (Sandbox Code Playgroud)
如何获得API List
的属性Stream
?
Era*_*ran 261
这是基本的,您使用map
:
List<String> names =
personList.stream()
.map(Person::getName)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
编辑:
为了组合好友名称列表,您需要使用flatMap
:
List<String> friendNames =
personList.stream()
.flatMap(e->e.getFriends().stream())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
124659 次 |
最近记录: |