将整数列表转换为逗号分隔的字符串

新手上路,请多包涵

我试图将整数列表转换为逗号分隔的整数字符串。

Collectors.joining(CharSequence delimiter) - 返回一个 Collector,它按遇到顺序连接输入元素,由指定的分隔符分隔。

 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

我在第 8 行收到错误:

Stream 类型中的方法 collect(Collector<? super Integer,A,R>) 不适用于参数 (Collector)

有没有办法通过 Java 8 中的流来做到这一点?

如果我用 "1", "2", "3","4","5" 创建一个字符串列表。有用。

原文由 Nicky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 436
2 个回答

是的。但是,没有 Collectors.joining 对于 Stream<Integer> ;你需要一个 Stream<String> 所以你应该 map 在收集之前。就像是,

 System.out.println(i.stream().map(String::valueOf)
        .collect(Collectors.joining(",")));

哪些输出

1,2,3,4,5

此外,您可以通过多种方式生成 Stream<Integer>

 System.out.println(
        IntStream.range(1, 6).boxed().map(String::valueOf)
               .collect(Collectors.joining(","))
);

原文由 Elliott Frisch 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 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 delimiter
System.out.println(str);  // Output: 1, 2, 3, 4, 5, 6, 7

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);

原文由 Dinesh K 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题