【问题标题】:Java: Convert List<Integer> to StringJava:将 List<Integer> 转换为字符串
【发布时间】:2012-11-02 15:51:39
【问题描述】:

如何转换List&lt;Integer&gt; to String?例如。如果我的List&lt;Integer&gt; 包含数字 1 2 和 3 如何转换为 String = "1,2,3"?每一个帮助将不胜感激。

【问题讨论】:

  • 为什么投反对票?这是一个很好的问题,@GermannArlington 或 orangegoat 都没有回答。
  • 可能是因为“这个问题没有显示任何研究工作”。
  • 不过,这是一个有用的问题,从答案来看并不明显。我认为很明显,如果用户提出这样的问题,他们对语言非常陌生,因此这是一个合理的问题。如果没有重复的问题(我没有检查),那么这是一个更强有力的案例。恕我直言。
  • 我试图找到解决方案,但我找不到解决我的问题的解决方案。我不明白我的问题有什么问题...
  • @Martin, Joe:当你提出这样的问题时,不要只为你的问题寻求解决方案。展示您尝试解决问题的方法,并解释您遇到的问题。这就是“研究工作”的组成部分。否则,它只是看起来像:“嘿,我懒得知道如何做这个简单的事情。有人可以帮我做吗?”。

标签: java


【解决方案1】:

我认为您可以简单地使用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 方法,如上将列表转换为字符串

【讨论】:

  • 我认为 AbstractCollection#toString 返回的字符串格式是特定于实现的?
【解决方案2】:

Guava:

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

【讨论】:

  • 投反对票:为什么投反对票?你不觉得上面的内容比其他选项更优雅、更易读吗?
  • 我认为这个答案对这个问题是有效的。 OP 没有明确指定他/她不想使用第三方库。我会用 +1 来补偿。
【解决方案3】:

在 vanilla 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!
【解决方案4】:

一种方法是:

Iterate 在列表中,将每个项目添加到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();

【讨论】:

  • StringBuilder 如果使用 Java 5 或更高版本
  • list.stream().map(String::valueOf).collect(Collectors.joining(",")) 从 Java 8 开始。
【解决方案5】:

只是从流行的库(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-


其他人的 cmets 的优雅选择(从 Java 8 开始):

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

【讨论】:

    猜你喜欢
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多