Java:将List<Integer>转换为String

65

我该如何将List<Integer>转换为字符串?例如,如果我的List<Integer>包含数字1、2和3,如何将其转换为字符串="1,2,3"? 感谢您的任何帮助。


4
为什么会有负评?这是一个好问题, @GermannArlington 或 orangegoat 都没有回答它。 - Joe
5
尽管如此,这是一个有用的问题,从答案中并不明显。我认为很明显,如果一个用户提出这样的问题,他们对这种语言非常陌生,因此这是一个合理的问题。如果没有重复的问题(我没有检查),那就更加有说服力了。依我看。 - Joe
4
@Martin,Joe:当你提出这样的问题时,请不要仅仅寻求解决方案。展示一下你尝试解决问题的过程,并解释你遇到了什么问题。这就是所谓的“研究努力”。否则,它看起来就像:“嘿,我太懒了,不想找出如何做这个简单的事情。有人能帮我吗?” - JB Nizet
1
@JB Nizet:对你来说可能很简单,但我从未做过这件事,所以我首先尝试找到相关信息,但不成功,所以我问如何做。但好的,我接受你的意见。 - Martin
1
自从Java 8以后,你可以这样做:numbers.stream().map(i -> i.toString()).collect(Collectors.joining(",")) - James
显示剩余4条评论
5个回答

54

在纯Java 8(流)中,您可以执行

// Given numberList is a List<Integer> of 1,2,3...

String numberString = numberList.stream().map(String::valueOf)
    .collect(Collectors.joining(","));

// numberString here is "1,2,3"

1
更好、更美、更新的方法来正确地完成它 ++1! - Camille

53

我认为您可以简单地使用如下的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]

如果你不想在字符串中包含[],可以使用子字符串例如:

如果您不希望字符串中包含[],只需使用子字符串即可,例如:
   listString = listString.substring(1, listString.length()-1); 
   System.out.println(listString); //<- this prints 1, 2, 3
请注意:List.toString() 使用 AbstractCollection#toString 方法,该方法将列表转换为如上所示的字符串。

1
AbstractCollection#toString返回的字符串格式是特定于实现的,我认为是这样吗? - ed22
在我看来,这有点不太正规和过时。 - Ahmad Abdelghany

50

使用Guava

String s = Joiner.on(',').join(integerList);

3
投票负方:为什么要给我点踩呢?难道你不觉得上述选项比其他选项更加优雅易读吗? - JB Nizet
2
我认为这个答案对这个问题是有效的。OP没有明确指出不想使用第三方库。我会进行+1的补偿。 - kosa

11
一种方法是:
遍历列表,将每个项添加到StringBuffer(或)StringBuilder中,并在结尾处使用toString()
示例:
StringBuilder strbul  = new StringBuilder();
     Iterator<Integer> iter = list.iterator();
     while(iter.hasNext())
     {
         strbul.append(iter.next());
        if(iter.hasNext()){
         strbul.append(",");
        }
     }
 strbul.toString();

1
如果使用Java 5或更高版本,则应使用StringBuilder。 - Aravind Yarram
6
自Java 8以来,使用list.stream().map(String::valueOf).collect(Collectors.joining(","))可以将列表中的元素转换为字符串并用逗号连接起来。 - Bienvenido David

7

还有一种(众多中的一种)使用流行库(Apache Commons)的方法:

import org.apache.commons.lang3.StringUtils;

String joinedList = StringUtils.join(someList, ",");

查看文档:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#join-java.lang.Iterable-java.lang.String-


根据其他人的评论(从Java 8开始),有一个优雅的选择:

String joinedList = someList.stream().map(String::valueOf).collect(Collectors.joining(","));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接