我有一个二维整数数组。我想把它们放入一个散列图。但我希望基于数组索引访问来自HashMap的元素。类似于:
对于[2][5],map.get(2,5)
,该map.get(2,5)返回与该键关联的值。但是我如何创建一个带有一对键的hashMap呢?或者通常使用多个键:map<((key1,key2,..,keyN),Value)
,我可以使用get(key1,key2,...keyN)访问元素。
编辑:三年后,张贴的问题,我想添加一点更多
我遇到了nxn矩阵
的另一种方式。
数组索引、i
和j
可以通过以下方式表示为单个键
:
int key = i * N + j;
//map.put(key, a[i][j]); // queue.add(key);
并且可以通过以下方式从键
中重新检索索引:
int i = key / N;
int j = key % N;
有几种选择:
Map<Integer, Map<Integer, V>> map = //...
//...
map.get(2).get(5);
public class Key {
private final int x;
private final int y;
public Key(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Key)) return false;
Key key = (Key) o;
return x == key.x && y == key.y;
}
@Override
public int hashCode() {
int result = x;
result = 31 * result + y;
return result;
}
}
实现equals()
和hashcode()
在这里至关重要。然后只需使用:
Map<Key, V> map = //...
和:
map.get(new Key(2, 5));
Table<Integer, Integer, V> table = HashBasedTable.create();
//...
table.get(2, 5);
table
使用下面映射的映射。
请注意,特殊的key
类是扩展到n维的唯一方法。您还可以考虑:
Map<List<Integer>, V> map = //...
但从性能的角度来看,这是很糟糕的,可读性和正确性也是如此(没有一种简单的方法来强制列表大小)。
也许看看Scala,在这里您有元组和case
类(用一行程序替换整个key
类)。
问题内容: 我有一个2D整数数组。我希望将它们放入HashMap中。但是我想从基于数组索引的HashMap访问元素。就像是: 对于A [2] [5],它返回与该键关联的值。但是,如何使用一对密钥创建一个hashMap?或者通常是多个键:以一种我可以使用get(key1,key2,… keyN)来访问元素的方式。 编辑:发布问题3年后,我想再添加一点 我遇到了另一种方法。 数组索引,和可被表示为一个
问题内容: 我需要快速创建一个只有两个圆角的矩形(也可以使用目标C代码)。 目前,我的代码正在创建两个矩形 和 并将它们合并(有两个直角和两个圆角),但是我对代码不满意,并且我很确定应该有更好的方法。 我是iOS和图形开发的新手。 问题答案: 在 Swift 2.3中, 您可以这样做 在 Objective-C中, 您可以使用class方法 示例实现- 并将上述方法称为-
我知道我可以这样用一个根上下文写两个dispatchers servlet: @override public void onStartup(ServletContext ServletContext)抛出ServletException{ } 但是我如何使用AbstractAnnotationConfigDispatcherServletInitializer来实现这一点呢?如果不可能--为什么
我试图用两个外键(分别用于categories和sub_categories表的category_id和sub_categories_id)为Products表创建一个播种器。 尝试了这个,但它返回了一个错误 未定义变量:类别 我可以创建种子只有子_类,但我需要创建的类别以及。我该怎么做?
我成功创建了一个包含1个键和2个值的查找表: 但当我试图将其扩展到4个值时,我发现了一系列错误,我发现条目仅限于2个值! 那么,请,如何对1个键和4个值做类似的事情?我不能通过为第一个映射的第二个参数声明内部map.entry来扩展它。条目,因为在这一点上,第一个字符串不再是唯一的,我是说,映射的所有参数。条目 你们不需要走我走的路。你们可以自由地提供任何解决方案/数据结构,允许我存储和检索3个字
我不知道如何创建以下内容: 我总是得到 /usr/include/c/5.5.0/bits/stl_对。h:139:45:错误:使用已删除的函数'std::atomic::atomic(const std::atomic 我已经试过了 我知道std::atomic是不可复制的,那么你应该如何创建一对呢?难道这不可能吗?