使用Java Streams将Java ArrayList转换为Vector

时间:2018-02-06 21:36:45

标签: java java-stream

我知道这是一个更简单的问题。

但是是否可以转换给定的对象列表List<Person>并使用 Java Streams API 将其转换为Vector<PersonName>

public class Person {        
     String name;
     String lastName;
     int age;
     float salary;
}

public class PersonName {
     String name;
     String lastName;
}

2 个答案:

答案 0 :(得分:4)

你应该真正构建一个构造函数和/或使PersonName扩展Person。但是这里有一个不使用的解决方案:

ArrayList<Person> list = ...;
Vector<PersonName> vect = list.stream().map(t -> {
    PersonName name = new PersonName();
    name.lastName = t.lastName;
    name.name = t.name;
    return name;
}).collect(Collectors.toCollection(Vector::new));

答案 1 :(得分:2)

PersonName类型创建两个参数构造函数,然后您可以执行:

Vector<PersonName> resultSet =
               peopleList.stream()
                         .map(p -> new PersonName(p.getName(), p.getLastName()))
                         .collect(Collectors.toCollection(Vector::new));