【问题标题】:Print all characters from ArrayList after each other依次打印 ArrayList 中的所有字符
【发布时间】:2018-10-22 11:50:55
【问题描述】:

我有这个数组列表

ArrayList<Character> wrongLetters;

还有这个系统

System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", String.valueOf(wrongLetters)) + ")");

现在打印出来是这样的

Number of errors: 9 ([X, M, S, K, B, Q, L, I, U])

但我怎样才能做到这一点

Number of errors: 9 (XMSKBQLIU)

【问题讨论】:

    标签: java


    【解决方案1】:

    Java 8 或更高版本:

    final String result = wrongLetters.stream().map(String::valueOf).collect(Collectors.joining());
    System.out.println("Number of errors: " + wrongLetters.size() + " (" +  result + ")");
    

    【讨论】:

      【解决方案2】:

      你可以使用 wrongLetters.forEach(System.out::print);在 Java 8 中

      【讨论】:

        【解决方案3】:

        您可以使用 Java 8 以这种方式做到这一点

        System.out.println(wrongLetters.stream().map(x -> x.toString()).collect(Collectors.joining()));
        

        【讨论】:

        • 表达式 .map(x -&gt; x.toString()) 可以替换为对 Object 类的方法引用,例如 map(Object::toString)
        • 嘿@dbl 我还在学习 Java 8。感谢您的评论也会从中学习。
        【解决方案4】:

        愚蠢的答案(只删除非字母数字):

        System.out.println("Number of errors: " + wrongLetters.size() + " (" + String.join("", String.valueOf(wrongLetters).replaceAll("[^A-Za-z0-9]", ""))+ ")");
        

        Java 8+ 的另一个:

        StringJoiner joiner = new StringJoiner("");
            wrongLetters.stream().forEach(err -> joiner.add(String.valueOf(err)));
            System.out.println("Number of errors: " + wrongLetters.size() + " (" + joiner + ")");
        

        没有 Java 8(使用 StringBuilder):

        StringBuilder sb = new StringBuilder(" (");
            for (Character character : wrongLetters) {
                sb.append(character);
            }
            sb.append(")");
            System.out.println("Number of errors: " + wrongLetters.size() + sb.toString());
        

        【讨论】:

          【解决方案5】:

          String.valueOf(wrongLetters) 在字符数组上调用 toString() 这就是为什么它看起来像这样。此处仅对一个字符串调用 Join [X, M, S, K, B, Q, L, I, U]。 您必须将 ArrayList 更改为 String。检查这个 -> Converting ArrayList of Characters to a String?

          【讨论】:

            【解决方案6】:

            从字符数组列表中创建一个字符串

            String str = "";
            for (Character c : wrongLetters) {
                str += c;
            } 
            

            然后:

            System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", str) + ")");
            

            或创建一个字符串生成器:

            StringBuilder stringBuilder= new StringBuilder(wrongLetters.size());
            
                for (Character c : wrongLetters) {
                  stringBuilder.append(c);
                }
            

            然后:

                   System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", stringBuilder.toString()) + ")");
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-12-29
              • 1970-01-01
              • 1970-01-01
              • 2020-10-18
              • 2020-12-24
              • 2012-09-29
              • 1970-01-01
              • 2017-09-24
              相关资源
              最近更新 更多