2016-06-04 23 views
2

Ich habe eine Sequenz von ganzen Zahlen (List<Integer>) und möchte es in eine Zeichenfolge konvertieren. Ich sehe nicht, warum dieser Code nicht funktioniert:Konvertieren Liste <Integer> zu String

sequence.stream().map(n -> n == 1 ? "+" : (n == -1 ? "-" : Integer.toString(n))).collect(Collectors.joining(",")); 

Wie Sie sehen, ich will 1 als + und -1 als - vertreten sein.

Ich bekomme die Fehlermeldung Type mismatch: cannot convert from Stream<Object> to <unknown>.

+0

Works. Sind Sie sicher, dass der Fehler von dieser Zeile verursacht wird? – binoternary

+2

Verwenden Sie Eclipse? Googeln der Fehlermeldung deutet darauf hin, dass dies ein Fehler mit dem Eclipse-Compiler ist. – binoternary

+0

@binoternary Ja, ich benutze Eclipse. Wann wird dieser Fehler behoben? –

Antwort

2

EDIT

nach dem Kommentar zu lesen wissen, dass Java in Ordnung ist:

Eclipse ist nicht bekannt, n == 1 ? "+" : (n == -1 ? "-" : Integer.toString(n))).toString() einen String beeing.

sequence.stream().map(n -> (String)((n == 1 ? "+" : (n == -1 ? "-" : Integer.toString(n))))).collect(Collectors.joining(",")) 

funktioniert gut.

EDIT

, wenn Sie es auf eine Funktion, Eclipse-kennt seine einen String extrahieren:

für mich
private static String format(Integer n) { 
    return n == 1 ? "+" : (n == -1 ? "-" : Integer.toString(n)); 
} 
+0

Sobald ich Ihre Zeile in Eclipse speichere (was ich kompilieren muss), entfernt Eclipse '(String)' und kommt wieder mit 'Type mishmatch: convert von Stream zu '. Vielleicht, weil ich AutoFormat beim Speichern verwende. –

+0

es ist die Option 'unnötige Zauber entfernen', es gibt einige Teile von Eclipse klüger als die anderen :-) – Turo

Verwandte Themen