美文网首页
Map不同实现的containsValue效率的比较

Map不同实现的containsValue效率的比较

作者: 柳蒿 | 来源:发表于2019-09-29 16:16 被阅读0次

HashMap中的containsValue的实现,for循环嵌套在每一个桶中寻找。

        Node<K,V>[] tab; V v;
        if ((tab = table) != null && size > 0) {
            for (int i = 0; i < tab.length; ++i) {
                for (Node<K,V> e = tab[i]; e != null; e = e.next) {
                    if ((v = e.value) == value ||
                        (value != null && value.equals(v)))
                        return true;
                }
            }
        }
        return false;
    }

LinkedHashMap中cotainsValue的实现,一个for循环遍历双向链表。
public boolean containsValue(Object value) {
//遍历一遍链表,去比较有没有value相等的节点,并返回
for (LinkedHashMap.Entry<K,V> e = head; e != null; e = e.after) {
V v = e.value;
if (v == value || (value != null && value.equals(v)))
return true;
}
return false;
}

相关文章

网友评论

      本文标题:Map不同实现的containsValue效率的比较

      本文链接:https://www.haomeiwen.com/subject/sblmyctx.html