HashMap的clear方法

Posted 143401010116

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap的clear方法相关的知识,希望对你有一定的参考价值。

我们都知道HashMap的clear()方法会清楚map的映射关系,至于怎么实现的呢?

下面先看一下clear()方法的源码

 public void clear() {
        Node<K,V>[] tab;
        modCount++;
        if ((tab = table) != null && size > 0) {
            size = 0;
            for (int i = 0; i < tab.length; ++i)
                tab[i] = null;
        }
    }

可见方法只是把table[]置空了了table数组的元素,及链表的表头元素,如果表头被置为null,无法进入该链表,,而存的key-value呢?

原来现代的虚拟机都采用了可达性分析算法来判断一个对象是否存活,当一个对象不能通过任何引用找到它就认为它是不可达的,从而视为可回收的对象,所有存的数据都被gc自动回收了。

 

本来想总结一下Java的集合框架呢,但是发现了一个很全的网址,作者也很用心,这里推荐一下http://www.cnblogs.com/skywang12345/p/3323085.html

以上是关于HashMap的clear方法的主要内容,如果未能解决你的问题,请参考以下文章

hashmap冲突的解决方法以及原理分析:

无法使用 ArrayObjectAdaptor 的 clear() 和 addAll() 刷新/更新浏览片段

HashMap

C#通过Array.Clear部分清除数组的代码

大厂面试必问!HashMap 怎样解决hash冲突?

包含不同片段的HashMap(或ArrayList)