0
Ich habe einen Class
Foo
, dass ein Constructor
hat die name
und id
setzt.Ersetzen Sie den regulären foreach mit Strom/Lambda/Methode verweist
In einem anderen Class
habe ich eine List<String>
von Nachrichten, wo ich die name
und id
extrahieren kann.
Ich bin in der Lage, erfolgreich die Constructor
durch Schleifen durch die Liste mit regulären foreach
Schleife. Wie erreiche ich dies mit Stream
Java 8
oder Lambda
oder 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 Klasse:
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;
}
}
Ich habe 'userList.stream() parallel() Karte (Benutzer -> new Foo (getName (Benutzer), getId (Benutzer)))... Foreach (fooList :: hinzufügen); \t \t fooList.forEach (Benutzer -> System.out.println (user.getName() + "" + user.getId())); 'und ich habe null Zeiger Ausnahme –
@ user1629109 Fügen Sie keine Liste mit einem parallelen Stream hinzu. – michaelsnowden
Warum so? Irgend ein bestimmter Grund? manchmal funktioniert es und manchmal gibt es "NPE" –