【问题标题】:How would I create a String using a Character array in Java?如何在 Java 中使用字符数组创建字符串?
【发布时间】:2020-05-03 21:08:33
【问题描述】:

使用Character[] 构造新字符串的最有效方法是什么?使用原始char[] 很容易,但不幸的是,String 构造函数不包含Character[] 的选项。转换为char[] 似乎很麻烦。是否有任何有效的方法来仅使用 Character[] 构造字符串?

谢谢。

【问题讨论】:

  • StringBuilder s = new StringBuilder(chars.length()) 后跟一个循环,其主体调用 s.append 与您可能得到的一样有效。任何较短的解决方案充其量只能起到同等作用。

标签: java arrays char character


【解决方案1】:

一种解决方案是使用StreamCollectors#joining

Character[] chars = { 'H', 'e', 'l', 'l', 'o' };

String s = Arrays.stream(chars)
                 .map(Object::toString)
                 .collect(Collectors.joining());

System.out.println(s);

输出:

Hello

【讨论】:

    【解决方案2】:

    Character 数组转换为String 的一种方法

    Character[] chars = { 'H', 'e', 'l', 'l', 'o' };
    
    String str = Stream.of(chars)
                 .map(String::valueOf)
                 .collect(Collectors.joining());
    
    System.out.println(str);
    
    

    输出:

    Hello
    

    【讨论】:

      【解决方案3】:
      /*
       * To change this license header, choose License Headers in Project Properties.
       * To change this template file, choose Tools | Templates
       * and open the template in the editor.
       */
      package javaapplication2;
      
      public class as {
      
          public static void main(String[] args) {
              Character[] chars = {'T', 'e', 'c', 'h', 'i', 'e', ' ',
                  'D', 'e', 'l', 'i', 'g', 'h', 't'};
      
              StringBuilder word=new StringBuilder();
              for (Character char1 : chars) {
                  word.append(char1);
              }
              System.out.println(word);
          }
      
      }
      

      【讨论】:

      • 问题是关于Character[],而不是char[]
      【解决方案4】:

      是否有任何有效的方法来仅使用 Character[] 构造字符串?

      没有。没有构造函数可以做到这一点。

      按照您自己的建议,最有效的方法可能是将其转换为 char[]

      char[] chars = new char[characters.length];
      for (int i = characters.length - 1; i >= 0; i--) {
          chars[i] = characters[i];
      }
      String s = String.valueOf(chars);
      

      请记住,“高效”并不意味着“塞进一行”。基于流的解决方案效率会降低,因为它会为每个字符创建(并最终收集垃圾)一个字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多