美文网首页
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