Nic*_*cky 3 java integer java-8 java-stream collectors
我试图将整数列表转换为逗号分隔整数的字符串。
Collectors.joining(CharSequence delimiter) - 返回一个收集器,它按遇到顺序连接输入元素,由指定的分隔符分隔。
List<Integer> i = new ArrayList<>(); // i.add(null);
for (int j = 1; j < 6; j++) {
i.add(j);
}
System.out.println(i.stream().collect(Collectors.joining(","))); // Line 8
Run Code Online (Sandbox Code Playgroud)
我在第 8 行出错。
有没有办法通过 Java 8 中的流来做到这一点?
更新:
如果我用"1", "2", "3","4","5". 有用。
Ell*_*sch 32
是的。但是,没有Collectors.joiningfor Stream<Integer>; 你需要一个Stream<String>所以你应该map在收集之前。就像是,
System.out.println(i.stream().map(String::valueOf)
.collect(Collectors.joining(",")));
Run Code Online (Sandbox Code Playgroud)
哪些输出
1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)
此外,您可以通过Stream<Integer>多种方式生成。
System.out.println(
IntStream.range(1, 6).boxed().map(String::valueOf)
.collect(Collectors.joining(","))
);
Run Code Online (Sandbox Code Playgroud)
小智 9
使用 Apache Commons Lang 库,开箱即用的答案非常简单
公地郎
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
String str = org.apache.commons.lang.StringUtils.join(list, ","); //You can use any delimeter
System.out.println(str); // O/P:1,2,3,4,5,6,7
Run Code Online (Sandbox Code Playgroud)
Java 8 解决方案
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
String joinedList = list.stream().map(String::valueOf).collect(Collectors.joining(","));
System.out.println(joinedList);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22368 次 |
| 最近记录: |