我一直在尝试理解java.util.HashMap和java.util.HashSet的内部实现。以下是一时间在我脑海中浮现的疑虑:
@Override public int hashcode()在HashMap/HashSet中的重要性是什么?这个哈希码是在哪里内部使用的?当我们执行myMap.get(someKey);时,java会在内部调用someKey.hash
这也许是个愚蠢的问题但是..。让我们假设我有一个类ContainerClass,如果包含从几个添加和也删除元素的线程访问的HashSet。在其中一个线程中,让我们将其称为线程1,我执行以下代码: int number = ContainerClass.hashSet.get(keyId);
是否保证在执行第二行时,具有键keyId的元素仍然存在?或者这个
$HashIterator.nextEntry(HashMap.java:810)
at java.util.HashMap$KeyIterator.next(HashMap.java:$KeyIterator.next和java.util.HashMap$HashIterator.nextEntry错误消息,因为我不能显式地获取HashSet的keySet,我假设迭代器在默认情况下通过我使用的不是线程,而是递归调用。这里发生了什么事?static void solve2