太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA!
// 跳表化 private void skiplistify(Node<K, V>[] table, int hash) { if (table == null || table.length < MIN_SKIPLISTIFY_CAPACITY) { resize(); } else { SkiplistNode<K, V> head = new SkiplistNode<>(0, null, null, 1); int i = hash & (table.length-1); Node<K, V> p = table[i]; do { head.putValue(p.hash, p.key, p.value); } while ((p=p.next) != null); table[i] = head; } } 好了,关于跳表实现的HashMap我们就介绍完了。 最后一个问题 不管从原理还是实现过程,跳表都要比红黑树要简单不少,为什么JDK中不使用跳表而是使用红黑树来实现HashMap呢? 其实这个问题挺不好回答的,我在给自己挖坑,我简单从以下几个方面分析一下: (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |