我正在寻找声明在下面的代码中只能容纳3个不同值的2D数组的类型。
可能是每个单元格占用最少内存并保留3个不同值之一的2D数组的类型是什么?然后我会使用for-loop初始化这样的数组。
class Grid{
X[][] twoDimArray = new X[3][3];
Grid(){
}
void printElements(){
}
}
答案 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;
}