java里面啥数据结构可以从value查找key,算法复杂度为O(1)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里面啥数据结构可以从value查找key,算法复杂度为O(1)相关的知识,希望对你有一定的参考价值。

O(1)啊?

public V get(Object key)
if (key == null)
return getForNullKey();
int hash = hash(key.hashCode());
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next)
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;

return null;


这是HashMap的get方法.
key找Vaule都不是O(1)
别以为
a=Map.get(XXX) 就是O(1)
只是它把找的详细过程写在get里面了.
参考技术A 汗一个!
key-value的定义出现在Map集合里面,当然就是Map的了。

Map类内部含有一个静态的Entry<K,V>接口类,可以通过一次循环改造一个key-value的逆向Map,从而满足要求。
参考技术B HashMap.

java map表里,key值能否映射到多个Value?

参考技术A

map中的key和value是一一对应的,但是这里的value可以是一个集合,里面可能包含很多值,这样可以实现。使用时,要循环来访问。

Map的可以唯一无序,value无序且不唯一,所以不同的key会有相同的value,但是他的对内存中还是存储着多个相同的value,这是因为在存到里面的时候是根据hash码存的,hash是唯一的。

扩展资料:

注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包含,但请格外小心:在这样的映射上 equals 和 hashCode方法的定义将不再是明确的。

参考资料来源:百度百科-Map

以上是关于java里面啥数据结构可以从value查找key,算法复杂度为O(1)的主要内容,如果未能解决你的问题,请参考以下文章

list和map在啥情况下使用?哪个效率更高一些?

java里老是说key,这是啥东东?

key和value分别是啥意思

Map集合

java里面的map是啥?

java中,map集合里面,一个key对应value可以,一个key对应多个value也行,但是多个key可以对应同一个value