相关疑难解决方法(0)

Java HashMap如何使用相同的哈希代码处理不同的对象?

根据我的理解,我认为:

  1. 两个对象具有相同的哈希码是完全合法的.
  2. 如果两个对象相等(使用equals()方法),则它们具有相同的哈希码.
  3. 如果两个对象不相等,则它们不能具有相同的哈希码

我对么?

现在,如果我是正确的,我有以下问题:HashMap内部使用对象的哈希码.因此,如果两个对象可以具有相同的哈希码,那么它如何HashMap使用它所使用的键?

有人可以解释HashMap内部如何使用对象的哈希码吗?

java hash-function hashmap hashcode

205
推荐指数
9
解决办法
20万
查看次数

为什么这个 HashSet 在打印时看起来是排序的?

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 是对元素进行排序的集合。

为什么输出都ss1排序?我期望只对s1's 输出进​​行排序。

java collections hashset

6
推荐指数
2
解决办法
143
查看次数

HashSet 如何维护桶?为此使用什么数据结构?

当将具有不同 hashCode 的元素添加到 HashSet 时,必须添加一个新元素,对吗?这个新存储桶将添加到什么数据结构中?它是否再次诉诸某种数组并在每次添加新元素时调整其大小,从而使 HashSet O(n) 的添加和删除变得复杂?

在阅读了几篇文章后,我了解到 JDK 的某些实现使用 HashMap 作为 HashSet 的备份集合,但是 HashMap 用于此目的是什么?

java hash

2
推荐指数
1
解决办法
4585
查看次数

标签 统计

java ×3

collections ×1

hash ×1

hash-function ×1

hashcode ×1

hashmap ×1

hashset ×1