是否有可能(在Java中)创建一个Map,无论我要搜索什么键,我都会检索到相同的值?我们可以假设有限或无限数量的密钥。
我考虑了大小为 1 且负载因子为 1.0 的映射,并将该值存储在其中,但我几乎肯定 hashmap 实现会识别冲突,并无论如何返回 null。
我还考虑了这样一种可能性:如果我为变量创建自己的哈希函数,甚至是实现 Map 的新数据类型,我应该能够做到这一点,但可能有点混乱。也许不是?
当然,简单地将值映射到每个键将是非常低效的(除非有一个内置的方法,我忽略了),而且远没有听到 SO 的答案那么有趣。
我认为使用现有 API 执行此操作的最合理方法如下:
// Java 6/7
new TreeMap<K, V>(new Comparator<K>() {
@Override
public int compare(K lhs, K rhs) {
return 0;
}
});
// Java 8+
new TreeMap<K, V>((a, b) -> 0);
Run Code Online (Sandbox Code Playgroud)
这TreeMap认为所有键都是相等的,但否则会保持相当好的 Map 语义。
请注意,您放入地图中的第一个钥匙将永远保留在其中,除非您remove这样做。
IE
m.put("abc", "123");
m.put("def", "456");
// prints something like {abc=456}
System.out.println(m);
Run Code Online (Sandbox Code Playgroud)
因此,例如,如果您计划检查entrySet.
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |