【问题标题】:How to initialize char 2d array quickly?如何快速初始化 char 二维数组?
【发布时间】:2018-10-27 23:38:06
【问题描述】:

在 C 中,我可以使用类似的东西初始化二维字符数组

 public static char hashTable[10][5] = {"", "", "abc", "def", "ghi", "jkl",
            "mno", "pqrs", "tuv", "wxyz"};

我想知道如何在 Java 中做到这一点?

【问题讨论】:

  • 你的意思是二维字符数组吗?
  • 是的,我的意思是二维数组
  • 空字符可以使用'\u0000'或Character.MIN_VALUE
  • 听起来不错,不错
  • 快速在什么意义上?你的意思是源字符的最少数量吗?写源码最快? (不一定相同!)最小的运行时开销......执行一次?还是多次执行?

标签: java arrays char


【解决方案1】:

您可以在 String 文字上调用 toCharArray(),我能想到的最相似的构造是

public static char[][] hashTable = { 
        "".toCharArray(), "".toCharArray(), 
        "abc".toCharArray(), "def".toCharArray(),
        "ghi".toCharArray(), "jkl".toCharArray(), 
        "mno".toCharArray(), "pqrs".toCharArray(), 
        "tuv".toCharArray(), "wxyz".toCharArray() 
};

【讨论】:

  • "".toCharArray() 的较短版本是{},但"".toCharArray() 可能更好地表达了意图。
  • 您可能还应该解决从[10][5][][] 的变化,尤其是它们都不会是长度为5 的数组,结果是jagged array
  • @Andreas 很确定C is too
【解决方案2】:

您可以执行以下操作,

public static char[][] arr = {{'a', 'd'},{'s','w','f'}};

arr[0] 引用第一个数组 {'a', 'd'} 而 arr[1] 引用第二个数组

【讨论】:

  • 如何表示空字符?
  • 什么是空的char?你的意思是一个空字符串?如果是,那么 {} ... 在这种情况下。
  • @AdamLee 如果你的意思是空的char,你真的不需要像 C 中那样的,因为如果你使用这个答案,Java 中的子数组有不同的长度。
  • 即使在 C 中,'\000' 也不是真正的“空”。
猜你喜欢
  • 2016-05-27
  • 2011-12-08
  • 2016-02-01
  • 1970-01-01
  • 2012-11-29
  • 2015-05-12
相关资源
最近更新 更多