Wie zu tun substring in einige Elemente der string-Liste mit lambda
Unten ist meine Liste von String.
["sunday", "monday", "tuesday", "wednesday", "fri", "satur"]
Ich soll Sie entfernen "Tag" aus den Elementen, wenn es zu Ende geht mit "der Tag". Wie dies in Lambda ?
Erwartete Ausgabe in der Liste:
["sun", "mon", "tues", "wednes", "fri", "satur"]
Habe ich versucht den code unten, aber nicht in der Lage, um den Wert zuzuweisen, um die Liste
daysList.stream().forEach(s -> { if(s.endsWith("day")) {
s = s.substring(0, s.indexOf("day"));
}});
Kann jemand bitte helfen Sie mir, diese ?
- Wie zu ersetzen
day
am Ende mit nichts, also geltenString#replaceAll("day$", "")
alle Elemente. Nur eine Idee, wie, um loszuwerden, der Zustand. Wenn Sie nicht schreiben können die geänderten Elemente wieder auf die Liste (ich weiß nicht, dass die API, die wohl noch, aber "forEach" zeigt an, dass es nicht möglich ist), könnten Sie sammeln Sie in einer neuen Liste. - warum nimmst du nicht einfach die Liste Durchlaufen mit for-Schleife?
- Ich habe das gleiche gemacht, Sie können sehen, dass in Frage. meine Frage ist nach dieser operation in meiner Liste haben sollte-Elemente ohne "Tag"
- Weil er wissen will, wie Sie dies tun, indem eine lambda?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meisten Antworten hier nutzen Sie einen Stream, aber Sie sollten nicht über einen Stream an alle:
Durchlaufen stream mit
forEach
wird nicht funktionieren; Sie müssen die Karte jedes der Elemente, die Sie modifiziert, um eine neue stream mitmap
. Dann sammeln Sie die Ergebnisse zu Ihrer Liste.s.substring(0, s.indexOf("day"))
wäre besser geschrieben alss.substring(0, s.length()-3)
; so dass Sie nicht Gefahr laufen, schlagen einem früheren auftreten von"day"
im string.lastIndexOf
. Aber danke für das heads-up.Sub-String mit Dezimalpunkt Sortierung .
String arr[]= {"2.4","4.2","3.1","5.7","3.0","2.01","7.06","6.003"};
Liste newList =Arrays.asList(arr);
newList.stream().Karte(n> n.substring(n.indexOf('.')) ).collect(Collectors.toList()).stream().sortiert werden().forEach(n -> System.aus.println(n));;