是否有可能(在 Java 中)创建一个 Map,无论我要搜索什么键,我都会检索到相同的值?我们可以假设 key 的数量有限或无限。
我考虑过一个大小为 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);
这个 TreeMap
认为所有的键都是平等的,但在其他方面会保持很好的 Map 语义。
请注意,您放入 Map 中的第一个键将永远保留在其中,除非您将其删除
。
即
m.put("abc", "123");
m.put("def", "456");
// prints something like {abc=456}
System.out.println(m);
因此,例如,如果您计划检查 entrySet
,您可能会记住这一点。
关于java - 是否可以创建一个每个键都指向相同值的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554878/