我有一个Class
Foo
,其Constructor
设置为name
和id
。
在另一个Class
我有List<String>
条消息,我可以提取name
和id
。
我能够通过使用常规Constructor
循环遍历列表来成功设置foreach
。如何使用Stream
Java 8
或Lambda
或Method References
public class ConstructorTest {
public static void main(String[] args) {
List<Foo> fooList = new ArrayList<Foo>();
List<String> userList = new ArrayList<String>();
userList.add("username1_id1");
userList.add("username2_id2");
//I want to replace the below foreach loop with stream/lambda/methodreferences
for (String user : userList) {
Foo foo = new Foo(getName(user), getId(user));
fooList.add(foo);
}
}
private static String getName(String user) {
return user.split("_")[0];
}
private static String getId(String user) {
return user.split("_")[1];
}
}
Foo Class:
public class Foo {
public Foo(String name, String id) {
this.name = name;
this.id = id;
}
private String name;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
答案 0 :(得分:1)
这个怎么样?
userList.stream().map(user -> new Foo(getName(user), getId(user)).forEach(userList::add)
或者这个
userList.forEach(user -> userList.add(new Foo(getName(user), getId(user))))