我有一个项目清单.我正在迭代列表,如果列表中存在下一个元素,我会附加一个逗号,如果这是我追加"!"的最后一个元素.
而不是使用for循环,这可以用forEach完成吗?
List<String> list1 = new LinkedList<>();
StringBuilder sb = new StringBuilder();
list1.add("one");
list1.add("two");
list1.add("three");
list1.add("four");
list1.add("five");
for(int i=0; i<list1.size();i++) {
sb.append(list1.get(i));
if(i+1 < list1.size()) {
sb.append(",");
} else {
sb.append("!");
}
}
Run Code Online (Sandbox Code Playgroud)
我试过了..
list1.forEach(s -> {
sb.append(s);
if() { // not sure how to check if next element is present..
sb.append(",");
} else {
sb.append("!");
}
});
Run Code Online (Sandbox Code Playgroud)
如何检查forEach中的i + 1条件...
好像你应该使用这个String.join功能.像这样的东西:
String.join(",", list1) + "!"
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用流.使用Collectors.joining方法的解决方案:
list1.stream().collect(Collectors.joining(",")).concat("!");
Run Code Online (Sandbox Code Playgroud)
使用流减少的解决方案:
list1.stream().reduce((a, b) -> a.concat(",").concat(b)).map(a -> a.concat(",")).orElse("");
Run Code Online (Sandbox Code Playgroud)
当然,如果您不想使用流,您可以执行以下每个链调用.
list1.forEach(s -> sb.append(s).append(','));
String str = sb.toString().concat("!");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |