初学者问题:我有一个hashmap,它将整数数组存储为值。每个值的键是一个由两个整数(坐标)组成的对象。
我的问题是:如何根据对象中的两个坐标(我的“键”)从hashmap检索值?
我的协和类(在Eclipse的一点帮助下):
public class Coords {
int x;
int y;
public Coords(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Coords other = (Coords) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
}
构建Hashmap:
public class BuildMap {
public Coords coords;
public int[] someData = new int[4];
public Random random = new Random();
HashMap<Coords, int[]> map = new HashMap<Coords, int[]>();
public void buildHashMap() {
// coordinates from (0,0) to (31,31)
for (int i = 0; i < 32; i++) {
for (int j = 0; j < 32; j++) {
coords = new Coords(i, j);
// Every Coord gets a few random numbers
for (int k = 0; k < 4; k++) {
someData[k] = random.nextInt(8564);
}
map.put(coords, someData);
}
}
如果我想访问坐标12,13上的数组,如何检索它?是否需要迭代(我希望不是,我想添加100000个坐标,当然要快速访问)。
我希望这能在某种程度上符合
int[] theValues = map.get(new Coords(12,13));
我希望你能帮助我。提前谢谢!
您有一个错误:您只使用了一个数组,并对其进行了多次引用。
移动这条线
public int[] someData = new int[4]; // without public
高于或低于此线:
coords = new Coords(i, j);
来修复它。
问题在于如何构建地图。
添加的数组与每个元素的值相同。
您需要为每个元素实例化一个新数组。
for (int i = 0; i < 32; i++) {
for (int j = 0; j < 32; j++) {
coords = new Coords(i, j);
int[] someData = new int[4]; // <==== create a new array for each Map value
// Every Coord gets a few random numbers
for (int k = 0; k < 4; k++) {
someData[k] = random.nextInt(8564);
}
map.put(coords, someData);
}
我有以下数据库结构: 对于如何从April和May键获取对象的值,我有点困惑。使用*ngFor在对象上迭代时。我将所有关键点都作为对象。我试图使用,但不起作用。 完整代码: Html 输出 如上所述,我的数据现在位于下。那么,我如何避免或访问密钥以获取数据呢?是否可以使用?
问题内容: 我在下面的对象中尝试获取所有id值。 使用以下代码,我仅获得第一个id值。有没有办法从嵌套对象中获取所有id值,而无需使用任何外部模块。 预期产量 问题答案: 您可以使用如下所示的JavaScript函数来获取嵌套属性: 检查此小提琴以获取可行的解决方案。
问题内容: 我从字符串定义一个新的gson对象: 此处的字符串示例:http : //api.soundrop.fm/spaces/XJTt3mXTOZpvgmOc 然后尝试返回一个值: 最后用: 但是我得到一个错误: 完整班:主班:http : //pastebin.com/v4LrZm6k 无线电班:http : //pastebin.com/2BWwb6eD 问题答案: 这是Java。字段根
我想编写一个Java类,根据相关的时间戳计算一些规则(对于每个rueleId)的出现次数。 例如 输入: 输出: 我想我可以利用HashMap。 我认为这里的键是基于ruleId(type:String)和timestamp(type:Calendar)的,值是计数。 我怎样才能拥有基于两个不同对象的密钥?我的方法错了吗?
问题内容: 我是JSON的新手。因此,如果这是一个非常基本的疑问,请不要责骂我。我有一个JSON对象参考,我想获取Key(对象只有一个“键值对”)。如何在Java中获得它? 问题答案: 您可以用来获取所有密钥。然后,您可以遍历密钥以从中获得第一个密钥,例如:
问题内容: 我如何获得后续的密钥名称?例如,我要“ button1”和“ button2”? 我尝试使用,尽管这没有用。 问题答案: 如果您稍微修改一下措辞,则可能会更好地理解: 请注意,您要遍历对象的属性,并在每个后续周期中使用对每个对象的引用。 MSDN说到以下内容: 在循环的每次迭代之前,都会为变量分配对象的下一个属性名称或数组的下一个元素索引。然后,您可以在循环内的任何语句中使用它来引用对