假设我有一个代表棋盘游戏的 2D 数组。我有一个“值”(键)(1、2、3 ... 12)列表,表示数组中相对于当前位置的位置。
例如,在array[1][1]
中,键1代表array[1][0]
左边的位置,而键2可能代表位于数组 [0][0]
左侧和上方。
有什么方法可以在 HashMap 中存储这两个数据(我想避免每次使用这些值时出现一堆 if 语句)?或者,在任何数据结构中?现在是创建枚举的合适时机吗?
我尝试过这个,显然行不通。
int row = 3;
int col = 5;
HashMap<Integer,String> markMap = new HashMap<>();
markMap.put(1,"col-1");
String location = markMap.get(1);
grid[row][(int)location] = 500;
最佳答案
利用 OOP 并创建一个对象!存储“delta”位置对象的数组,该数组将是一对 delta-x、delta-y,用于存储当前索引的相对位置。
在您的示例中,
int row = 1;
int col = 1;
// one left
array[row][col] = new DeltaLocation(-1,0); // (col, row) or (x, y)
int relativeCol = col + array[row][col].getDeltaX();
您可以将它们放入 Hashmap 中,或者实现 DeltaLocation 对象来保存值。由你决定。
关于java - 我可以使用 "relative"变量创建 HashMap 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427058/