Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个列表中提取多个字段并将其保存到另一个列表或相同类型的新列表。在Java8中_Java_List_Java 8_Java Stream - Fatal编程技术网

从一个列表中提取多个字段并将其保存到另一个列表或相同类型的新列表。在Java8中

从一个列表中提取多个字段并将其保存到另一个列表或相同类型的新列表。在Java8中,java,list,java-8,java-stream,Java,List,Java 8,Java Stream,我有一个用户列表列表“abc” 我只需要从列表中提取姓名和地址并保存到另一个新的列表对象列表“xyz”。或者有两个字符串字段name和address的新列表。e、 g: class SomeClass { String name; String address; ........//getters and setters } 我知道可以通过迭代原始列表并保存到另一个新的列表对象来完成。但我想知道如何在java8中更有效地实现这一点。通过使用streams(),map()…等,并使用默认构造函数

我有一个用户列表列表“abc”

我只需要从
列表中提取姓名和地址
并保存到另一个新的列表对象
列表
“xyz”。或者有两个字符串字段name和address的新列表。e、 g:

class SomeClass {
String name;
String address;
........//getters and setters
}
我知道可以通过迭代原始列表并保存到另一个新的列表对象来完成。但我想知道如何在
java8
中更有效地实现这一点。通过使用
streams()
map()
…等,并使用默认构造函数。

List List=users.stream()
List<SomeClass> list = users.stream()
                            .map(user -> new SomeClass(user.getName(), user.getAddress()))
                            .collect(Collectors.toList());
.map(用户->新建SomeClass(user.getName(),user.getAddress()) .collect(Collectors.toList());
谢谢您的回复。我已经实现了这个逻辑,它需要一个参数化的构造函数。没有构造函数是否可能?通常如何创建某个类的实例?替换为lambda中的代码。我认为如果您能给出带有构造函数的参数化类的示例会更好。您可以使用您调用的任何设置程序替换lambda,例如
user->{sc=new SomeClass();sc.setName(user.getName();return sc;}
不过它变得有点冗长了。@supunvjerathne,请看。在大多数情况下,它们太小,不易被注意到。
List<SomeClass> list = users.stream()
                            .map(user -> new SomeClass(user.getName(), user.getAddress()))
                            .collect(Collectors.toList());