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?
参考技术Amap中的key和value是一一对应的,但是这里的value可以是一个集合,里面可能包含很多值,这样可以实现。使用时,要循环来访问。
Map的可以唯一无序,value无序且不唯一,所以不同的key会有相同的value,但是他的对内存中还是存储着多个相同的value,这是因为在存到里面的时候是根据hash码存的,hash是唯一的。
扩展资料:
注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包含,但请格外小心:在这样的映射上 equals 和 hashCode方法的定义将不再是明确的。
参考资料来源:百度百科-Map
以上是关于java里面啥数据结构可以从value查找key,算法复杂度为O(1)的主要内容,如果未能解决你的问题,请参考以下文章
java中,map集合里面,一个key对应value可以,一个key对应多个value也行,但是多个key可以对应同一个value