【问题标题】:Is there a better way to convert a character literal array into a character object array in Java? [duplicate]有没有更好的方法将字符文字数组转换为 Java 中的字符对象数组? [复制]
【发布时间】:2023-02-02 01:40:09
【问题描述】:

我正在尝试将字符文字数组转换为字符对象数组。 现在我只是使用一个 for 循环,例如:

char[] charLiterals = "abcdefghijklmnopqrstuvwxyz".toCharArray();
Character[] charObjects = new Character[charLiterals.length];

for (int character = 0; character < charLiterals.length; character++) {
    charObjects[character] = Character.valueOf(charLiterals[character]);
}

但是有没有更简洁的方法来做到这一点?

【问题讨论】:

  • 更好地定义。更少的代码?更高效?更具可读性?另外......你的目标是什么版本的Java?

标签: java arrays


【解决方案1】:

一个简单的衬里就可以了。

Character[] charObjects = "abcdefghijklmnopqrstuvwxyz".chars().mapToObj(c -> (char)c).toArray(Character[]::new);

【讨论】:

    【解决方案2】:

    根据this article,有多种方法可以做到这一点。但我相信所有这些都归结为与您提供的迭代相似的迭代。

    如果您不介意使用外部库,那么org.apache.commons.commons-lang3:3.12.0 可能是最短和最干净的方法:

    int[] input = new int[] { 0, 1, 2, 3, 4 };
    Integer[] expected = new Integer[] { 0, 1, 2, 3, 4 };
    
    Integer[] output = ArrayUtils.toObject(input);
    
    assertArrayEquals(expected, output);
    

    【讨论】:

      【解决方案3】:

      只留下将String转换为Char数组的部分,直接将string的char值赋值给Character数组。

      String str = "abcdefghijklmnopqrstuvwxyz";      
      Character[] charObjects = new Character[str.length()];
      
      for(int i = 0; i < str.length(); i++) {
          charObjects[i] = Character.valueOf(str.charAt(i));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 2016-02-01
        • 1970-01-01
        相关资源
        最近更新 更多