java - 我可以使用 "relative"变量创建 HashMap 吗?

标签 java data-structures hashmap

假设我有一个代表棋盘游戏的 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/

相关文章:

java - 如何使用 apache POI 在 ppt 中将长表拆分为多张幻灯片

c - 为什么二进制搜索数组比二进制搜索树快一点?

java - 如何创建混合类型的嵌套 HashMap ?

java - 如何使用 jSTL c :set? 将 html 值分配给变量

java - 摆脱 Eclipse 中烦人的警告

java - 为什么我在使用最大整数值时会得到荒谬的值?

algorithm - 消除Searching linked List中的NULL检查

data-structures - 什么是属性关系图?

java - jcombobox 用 hashmap 填充

c++ - Concurrent_hash_map 实现抛出 SIGSEGV