作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用流连接一系列字符串并在它们之间添加逗号,但结果字符串的开头或结尾不能有逗号。
import java.util.Arrays;
import java.util.List;
public class QuestionNine {
public static void main(String[] args) {
new QuestionNine().launch();
}
public void launch(){
List<String> words = Arrays.asList("Hello", "Bonjour", "engine", "Hurray", "What",
"Dog", "boat", "Egg", "Queen", "Soq", "Eet");
String result = (words.stream().map(str -> str + ",").reduce("", (a,b) -> a + b));
result = result.substring(0, result.length() -1); //removes last comma
System.out.println(result);
}
}
不是在末尾使用 String.substring()
方法来删除最后一个逗号,有没有办法删除流管道中的最后一个逗号?
最佳答案
通常的习惯用法是使用连接 Collector
和 Streams。
String res = words.stream().collect(Collectors.joining(","));
虽然您可以在您的情况下使用 String.join
,因为您直接处理 Iterable
。
String res = String.join(",", words);
您的方法的问题在于您应用的映射函数强制每个单词的末尾都有一个逗号。你可以去掉这个映射;并应用 reduce 函数以获得所需的输出:
.stream().reduce("", (a,b) -> a.isEmpty() ? b : a+","+b);
但我不推荐这样做。
关于Java 流 : Is there a cleaner way of doing this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28860496/
我是一名优秀的程序员,十分优秀!