我如何在java中初始化这个2D数组?

时间:2014-12-26 06:41:54

标签: java arrays

我正在寻找声明在下面的代码中只能容纳3个不同值的2D数组的类型。

可能是每个单元格占用最少内存并保留3个不同值之一的2D数组的类型是什么?然后我会使用for-loop初始化这样的数组。

class Grid{
    X[][] twoDimArray = new X[3][3];

    Grid(){

    }

    void printElements(){
    }
}

3 个答案:

答案 0 :(得分:1)

如果你需要三个不同的值,byte [] []可能是最有效率的内存。

答案 1 :(得分:1)

对于三个值,enum非常引人注目;

enum ExampleEnum {
    ONE, TWO, THREE;

    @Override
    public String toString() {
        switch (this) {
        case ONE:
            return "One";
        case TWO:
            return "Two";
        default:
            return "Three";
        }
    }
}

然后您的数组声明可能如下,

ExampleEnum[][] twoDimArray = new ExampleEnum[3][3];

您可以将Arrays.deepToString(Object[])用于输出

System.out.println(Arrays.deepToString(twoDimArray));

答案 2 :(得分:1)

如果,如果,您需要减少资源使用,可以将整个网格存储在一个int中,每个图表位置两位,9个位置:18位。

int diagram;

int getValue(int x, int y) {
    int i = 2*(x + 3*y);
    return (diagram >>> i) & 0x3;
}

void setValue(int x, int y, int value) {
    int i = 2*(x + 3*y);
    int mask = 0x3 << i;
    diagram &= ~mask;
    diagram |= value << i;
}