【问题标题】:2d array with cells that can hold more than 1 value at index二维数组,其单元格可以在索引处保存超过 1 个值
【发布时间】:2015-02-07 08:00:07
【问题描述】:

我需要生成一个 4 行 4 列的矩阵。问题是某些单元格需要保存多个值。我不知道怎么做。我是否应该创建另一个数组,所以 array [] value = {1,13}; 然后将它的索引放入我的二维数组中?

 Array [][] matrix = new Array [4][4];
 matrix [][]   =   {{ a,        b,       c,  d},
                    {{1,13},    10,      6,  8}, 
                    {{2,14},    11,      7,  9},
                    {{5,13,15}, {12,10}, 4,  4} };

【问题讨论】:

    标签: java arrays matrix


    【解决方案1】:

    您可以改用 3D 数组。

    我不确定您是在数组中存储对象还是原语,但让我们假设原语(它并没有真正的区别):

    int[][][] matrix = new int [4][4][];
    
    matrix[1][1] = new int [] {10};
    matrix[2][0] = new int [] {2,14};
    matrix[3][0] = new int [] {5,13,15};
    

    也可以直接初始化:

     int [][][] mat =   
         {{{0},      {0},     {0},  {0}},
         {{1,13},    {10},    {6},  {8}},
         {{2,14},    {11},    {7},  {9}},
         {{5,13,15}, {12,10}, {4},  {4}}};
     System.out.println (Arrays.deepToString (mat));
    

    请注意,我将单个值更改为长度为 1 的数组,并将第一行的字符更改为 {0},因为这是一个 int 数组。

    输出(为了便于阅读,我添加了一些换行符和空格):

    [[[0],         [0],      [0], [0]], 
     [[1, 13],     [10],     [6], [8]], 
     [[2, 14],     [11],     [7], [9]], 
     [[5, 13, 15], [12, 10], [4], [4]]]
    

    【讨论】:

    • 谢谢,如果不是因为这个,我会走完全不同的路线。
    • @Will 你想在数组中放入什么数据?原语?对象?在你的代码中你写了Array,所以如果那是你的真实代码,编译器需要一个名为Array的类。
    • 我刚刚将数组的数据类型更改为char,现在可以正常工作了。我正在制作一个 NFA 表,所以我需要一行用于符号,另一行用于状态。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多