根据我的理解,我认为:
我对么?
现在,如果我是正确的,我有以下问题:HashMap内部使用对象的哈希码.因此,如果两个对象可以具有相同的哈希码,那么它如何HashMap使用它所使用的键?
有人可以解释HashMap内部如何使用对象的哈希码吗?
Set<Integer> s = new HashSet<Integer>();
s.add(77);
s.add(0);
s.add(1);
System.out.println(s);
TreeSet<Integer> s1 = new TreeSet<Integer>();
s1.add(77);
s1.add(0);
s1.add(1);
System.out.println(s1);
Run Code Online (Sandbox Code Playgroud)
输出:
s = [0, 1, 77]
s1= [0, 1, 77]
Run Code Online (Sandbox Code Playgroud)
根据教程点页面上的定义
Set 是一组没有重复元素的通用值。TreeSet 是对元素进行排序的集合。
为什么输出都s和s1排序?我期望只对s1's 输出进行排序。
当将具有不同 hashCode 的元素添加到 HashSet 时,必须添加一个新元素,对吗?这个新存储桶将添加到什么数据结构中?它是否再次诉诸某种数组并在每次添加新元素时调整其大小,从而使 HashSet O(n) 的添加和删除变得复杂?
在阅读了几篇文章后,我了解到 JDK 的某些实现使用 HashMap 作为 HashSet 的备份集合,但是 HashMap 用于此目的是什么?