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

时间:2019-08-22 04:34:42

标签: java java-8 integer 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

第8行出现错误。

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

更新

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

4 个答案:

答案 0 :(得分:4)

是的。但是,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(","))
);

答案 1 :(得分:1)

使用番石榴的com.google.common.base.Joiner

String res = Joiner.on(",").join(integerlist);

使用Java Stream API

String res = integerlist.stream()
                        .map(String::valueOf)
                        .collect(Collectors.joining(","));

答案 2 :(得分: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 delimeter       
System.out.println(str);  // O/P: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);

答案 3 :(得分:0)

也许您的问题的答案可能是:

List.toString()如下:

 List<Integer> intList = new ArrayList<Integer>();
    intList.add(1);
    intList.add(2);
    intList.add(3);
    
    
    String listString = intList.toString();
    System.out.println(listString); //<- this prints [1, 2, 3]

在下面的这篇文章中对此进行了很好的解释,希望您能找到它的有用之处:

https://stackoverflow.com/a/13198957/8992452