Java 8 streaming:如何将对象列表转换为其所选属性的列表

时间:2017-09-11 15:18:12

标签: java java-8 java-stream

我有一个班级

class Person {
   // get/set omitted for simplicity
   public String firstName;
   public String lastName;
}

我也有这样的对象列表

List<Person> list ...

我需要使用以下流转换

List<Person> list ...
List<String> firstLastNames = list.stream()....

所以我的List firstLastNames将包含此列表中的名字和姓氏。所以。

System.out.println(firstLastNames); // will give me -> "John", "Smith", "Jessica", "Jones".. etc.

2 个答案:

答案 0 :(得分:13)

这样的事情

stream.stream().flatMap(p -> Stream.of(p.firstName, p.lastName)).collect(Collectors.toList());

答案 1 :(得分:-3)

如果你想要一个真正的属性对象(java.util.Properties),你可以做类似下面的事情。请注意,由于您使用的属性,您无法通过这种方式获得重复记录。

 public static void main(String args[])
{
    // make some people
    Person john = new Person("John", "Smith");
    Person mary = new Person("Mary", "Richards");

    List<Person> people = new ArrayList<Person>();
    people.add(john);
    people.add(mary);

    Properties peopleProps = new Properties();
    for (Person person : people)
    {
        peopleProps.setProperty(person.getfName(), person.getlName());
    }

    System.out.println(peopleProps);

}