java - 在 Java 8 中映射自定义 List 对象的 1 个以上属性

标签 java java-8

我有以下自定义列表对象 List<Person> personList

class Person(){
    String name;
    String age;
    String countryName;
    String stateName;
// getter and setter for all property
}

如果我想映射personList基于 countryName 或 StateName 然后我会做:

List<String> countryName = personList.stream().map(Person :: getCountryName)

List<String> stateName = personList.stream().map(Person :: getStateName)

但现在我想在新的自定义列表对象中基于 CountryName 和 StateName 映射 personList List<Country> countryandStateList

class Country(){
    String countryName;
    String stateName;
// getter and setter for CountryName and StateName
}

我该怎么做?

最佳答案

首先,您用错了术语。您不是在过滤流元素,而是将流元素映射到不同类型的元素。

只需映射国家/地区实例:

List<Country> countries =
    personList.stream()
              .map(p->new Country(p.getCountry(),p.getState()))
              .collect(Collectors.toList());

这是假设相关的构造函数存在。如果不是这种情况,您还可以使用无参数构造函数,然后在创建的实例上调用 setter。

关于java - 在 Java 8 中映射自定义 List 对象的 1 个以上属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873033/

相关文章:

java - 为集合中的每个元素调用 JsonGenerator 方法

java - 使用 Java 流将字符串列表转换为映射列表

java - 有没有办法重定向 WOPI 休息调用以读取共享点文件?

Java 8 flatMap + Optional.of 不编译

lambda - 在 Java 8 中重用 lambda 表达式

lambda - 如何在 Java 8 中传递带有参数的 lambda 表达式作为参数?

java - 新的元空间能走多远,什么时候停止

java - Executors.newFixedThreadPool 如何停止同步方法上的所有 Activity 线程

java - StreamCorruptedException : invalid stream header:

java - 如何让 EditText view 在 Presentation(Duel Screen) 中获得焦点和 SoftKeyboard 输入?