Ich bin Anfänger von Java 8
und heute habe ich gerade mit meinem allerersten lambda
Ausdruck begonnen. Ich habe ein String
Array, wollen Werte vor und nach dem Sortieren drucken. Unten ist mein Code, jetzt gibt es stream has already operated upon or closed
Ausnahme, weil ich die forEach
zweimal auf friendsStream
verwendet habe.Stream - Druckwerte vor und nach der Sortierung
import java.util.stream.Stream;
class FirstLambda {
public static void main(String [] args){
String [] friends = new String [] {"C","A","B","D"};
Stream<String> friendsStream = Stream.of(friends);
System.out.println("My Friends:-");
printStream(friendsStream);
System.out.println("My Friends (after sort):- ");
Stream<String> sortedFriends = friendsStream.sorted((String m,String n) -> m.compareTo(n));
printStream(sortedFriends);
}
private static void printStream(Stream<String> stream) {
stream.forEach(s->System.out.println(s));
}
}
Meine Frage ist, was ist der einfachste oder beste Weg, um mein Problem zu lösen? Das bedeutet, dass die Zeichenfolgenwerte vor und nach dem Sortieren unter Verwendung von java 8
Stream
(dh Lambda)
Sie nur 'friendsStream.sorted verwenden können()' ohne Lambda zu sortieren, da durch Standardmäßig wird diese 'compareTo' Methode verwendet. Die Lösung besteht darin, zwei verschiedene "Stream" -Objekte zu verwenden. – 4castle
Ich stimme zu.Wie aber drucke ich Werte vor dem Sortieren und nach dem Sortieren? – Sridhar
@Sridhar * Die Lösung ist, zwei verschiedene Stream-Objekte zu verwenden. * –