下面是我的String列表。
["sunday", "monday", "tuesday", "wednesday", "fri", "satur"]
如果以" day"结尾,我想从元素中删除" day" 。如何在Lambda中做到这一点?
列表中的预期输出:
["sun", "mon", "tues", "wednes", "fri", "satur"]
我已尝试过以下代码,但无法将值分配给列表
daysList.stream().forEach(s -> { if(s.endsWith("day")) {
s = s.substring(0, s.indexOf("day"));
}});
有人可以帮我吗?
答案 0 :(得分:7)
这里的大多数答案都使用Stream,但你根本不应该使用Stream:
daysList.replaceAll(s -> s.replaceFirst("day$", ""));
答案 1 :(得分:5)
使用forEach
对流进行迭代无法正常工作;您需要使用map
将修改后的每个元素映射到新流。然后,您可以将结果收集回列表。
daysList = daysList.stream()
.map(s -> s.endsWith("day") ? s.substring(0, s.length()-3) : s)
.collect(Collectors.toList());
答案 2 :(得分:1)
具有小数点排序的子字符串。
String arr [] = {“ 2.4”,“ 4.2”,“ 3.1”,“ 5.7”,“ 3.0”,“ 2.01”,“ 7.06”,“ 6.003”};
列表newList = Arrays.asList(arr); newList.stream()。map(n-> n.substring(n.indexOf('。'))).collect(Collectors.toList())。stream()。sorted()。forEach(n->系统。 out.println(n));;
答案 3 :(得分:0)
List<String> daysList = Arrays.asList("sunday", "monday",
"tuesday", "wednesday",
"fri", "satur"
);
List<String> res = daysList.stream()
.map(s -> s.replace("day",""))
.collect(Collectors.toList());