[英]need to find out “key” in data structure in java
我正在寻找一种数据结构,需要在其中存储值然后根据键检索它。但是在我的情况下,我的键和值是相同的,所以我不能使用HashMap。 HashSet也没有用,因为在这种情况下,我需要进行顺序搜索以找到我的密钥。 所以这是我正在寻找的例子:
class A{
int x;
int y;
int z;
equals(){
//equals is overridden based only on int x and int y; and not on z.
}
}
Class B{
Map<A,z>mapA = new HasMap<>(A,z); - option 1 , not useful.
//store values in mapA. my z is dummy, in fact I need only class A object on some condition match.
fun(object k){
if(mapA.containsValue(k))
{
/*here I need to get class object A if it matches with "k". There is no function available in map to get the key if it matches key. Also if I use HashSet, in that case I need to retrieve the value by iterating over the set which is not preferable. I wanted to achieve this search in O(1) or O(logn) */
}
}
}
任何建议将不胜感激。
Edit1: Hashset只告诉键集合中是否存在键? 它没有给我钥匙。 要获取Key,我必须遍历集合。如果我错了,请更正我。
如果键是值,则HashSet正是您所需要的。 搜索密钥将花费O(1)预期时间,与任何哈希表相同。
在这种情况下<key,value>
我们可以将HashMap与<key,key>
一起使用<key,key>
而不是<key,value>
。 这将有助于我使用键作为值从映射中获取键。在我的情况下,我需要一些东西以便我们可以在一次操作中获得一个值而无需任何迭代。尽管map可以做到这一点,但通过设计它应该具有两个值,即键和值。 除了MAP之外,java中没有其他数据结构可以做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.