繁体   English   中英

如何在Java中初始化此2D数组?

[英]How do i initialize this 2D array in java?

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

可以占用每个单元最少内存并保存3个不同值之一的2D数组的类型是什么? 然后,我将使用for循环初始化此类数组。

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

    Grid(){

    }

    void printElements(){
    }
}

如果需要三个不同的值,则byte [] []可能是最有效的,可以明智地使用内存。

对于三个值,一个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));

如果只是,如果您需要减少资源使用,则可以将整个网格存储在一个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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM