【问题标题】:What's the most elegant/concise way of printing all strings in a list into a single string? [duplicate]将列表中的所有字符串打印成单个字符串的最优雅/简洁的方法是什么? [复制]
【发布时间】:2013-10-15 16:52:42
【问题描述】:

有没有一种优雅的方式(没有迭代器或循环的优雅含义)将 Java 的 List<Sting> 对象的每个成员打印成逗号分隔的字符串?

例如,Java 版本的 Perl 的 my $allElementsString = join(",", @myStrings);

我检查了 List 界面,没有发现任何有希望的东西(我最好的猜测是使用 toArray 然后使用 Array 的 toString?)

【问题讨论】:

标签: java string list


【解决方案1】:

JDK 中没有任何内容可以直接执行此操作。您可以使用StringBuilder 实现您自己的连接器或使用像 Guava 这样的 3rd 方库

List<String> string = ...;
String list = Joiner.on(",").join(string);

【讨论】:

    【解决方案2】:

    如果它是一个字符串列表,那么只需打印它:

    System.out.println(yourList);
    

    如果它是自定义对象的列表,请确保您已在自定义类中重写 toString 方法以正确打印列表对象。

    【讨论】:

      【解决方案3】:

      我认为大多数人使用Apache Commons' StringUtils

      List<String> yourStrings = /* something */;
      String commaSeperated = StringUtils.join(yourStrings, ',');
      

      Apache Commons libraries 非常方便。我建议您查看它们(或 Google 的 Guava)。

      【讨论】:

        【解决方案4】:

        类似这样的:

        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        String result = list.toString().substring(1, list.toString().length() - 1);
        System.out.println(result);
        

        输出:

        1, 2, 3
        

        【讨论】:

        • 将其编写为单行代码并不能得到两次调用list.toString() 的回报,尤其是在列表可能很大的实际代码中。为局部变量多写一行代码也不错。
        【解决方案5】:

        JDK 中没有,但有 guava 和其他实用程序库也提供类似的解决方案。

        【讨论】:

          【解决方案6】:

          不。您可能应用于 List 或 Array 的任何 toString 方法都不会以任何有意义的方式格式化。

          【讨论】:

            【解决方案7】:

            如前所述,要么使用 Guava,要么使用 Apache Common 的 StringUtils

            StringUtils.join( list, ",");
            

            【讨论】:

              【解决方案8】:

              Best way to concatenate List of String objects?

              引用, 使用 Apache Commons Lang 中的 StringUtils.join 方法之一。

              import org.apache.commons.lang3.StringUtils;
              
              String result = StringUtils.join(list, ", ");
              

              【讨论】:

                【解决方案9】:

                【讨论】:

                  猜你喜欢
                  • 2020-10-26
                  • 2011-10-29
                  • 2013-11-12
                  • 2010-12-08
                  • 2011-03-25
                  • 2016-09-12
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多