与集合相关的 SCJP 书中的逻辑
logic from SCJP book related to Collections
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public int hashCode() {
return 420;
}
}
根据上面的程序答案是:
答案:使用 Person 键从 HashMap 中查找值的时间取决于映射的大小。
我没有clue/idea答案怎么和上面一样。我认为这是错误的 hashcode() 方法实现,但唯一的选择如下:
- 哪个说法是正确的?
- 一个。使用 Person 键从 HashMap 中查找值的时间取决于
关于地图的大小。
- 乙。从 HashMap 中删除一个 Person 键将删除所有映射条目
对于类型为 Person 的所有键。
- C。将第二个 Person 对象插入到 HashSet 中将导致
第一个作为副本删除的 Person 对象。
- D.判断Person对象是否包含在a中的时间
HashSet 是常量,不依赖于映射的大小。
答案:A
如果有人能对此提供一些理解,那就太好了,因为我无法在网上找到任何答案
正常情况下在HashMap中查找一个item,使用hash码来查找该item被放置在哪个"bucket"中。因为hash冲突的可能性(即两个item散列到相同的值),然后使用 .equals()
.
比较项目
在这种情况下,所有项目都有哈希冲突(因为它们的哈希值都是 420)。
这意味着它需要对地图中的每个项目进行 .equals()
检查,因为它们都在同一个桶中,这意味着找到该项目需要的工作量与地图中的项目数。
HashMap 使用哈希码将条目放入桶中并等于定位它们。
如果所有条目都具有相同的哈希码,那么它们最终都会在同一个桶中。现在,每当您从 map 请求某些内容时,hashmap 将遍历同一存储桶中的所有条目,并在每个条目上调用 equals 以找到您请求的条目。这就是为什么
The time to find the value from HashMap with a Person key depends on
the size of the map.
是正确答案
这不是错误的哈希码,而是糟糕的哈希函数。无论对象是什么,它都试图生成相同的哈希键。
由于我们生成了相同的哈希码,因此发生了冲突。冲突解决技术之一是链接。因此,添加到地图中的所有对象都将链接到一个桶中。所以我们需要遍历链来获得正确的对象因此答案
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public int hashCode() {
return 420;
}
}
根据上面的程序答案是:
答案:使用 Person 键从 HashMap 中查找值的时间取决于映射的大小。
我没有clue/idea答案怎么和上面一样。我认为这是错误的 hashcode() 方法实现,但唯一的选择如下:
- 哪个说法是正确的?
- 一个。使用 Person 键从 HashMap 中查找值的时间取决于 关于地图的大小。
- 乙。从 HashMap 中删除一个 Person 键将删除所有映射条目 对于类型为 Person 的所有键。
- C。将第二个 Person 对象插入到 HashSet 中将导致 第一个作为副本删除的 Person 对象。
- D.判断Person对象是否包含在a中的时间 HashSet 是常量,不依赖于映射的大小。
答案:A
如果有人能对此提供一些理解,那就太好了,因为我无法在网上找到任何答案
正常情况下在HashMap中查找一个item,使用hash码来查找该item被放置在哪个"bucket"中。因为hash冲突的可能性(即两个item散列到相同的值),然后使用 .equals()
.
在这种情况下,所有项目都有哈希冲突(因为它们的哈希值都是 420)。
这意味着它需要对地图中的每个项目进行 .equals()
检查,因为它们都在同一个桶中,这意味着找到该项目需要的工作量与地图中的项目数。
HashMap 使用哈希码将条目放入桶中并等于定位它们。 如果所有条目都具有相同的哈希码,那么它们最终都会在同一个桶中。现在,每当您从 map 请求某些内容时,hashmap 将遍历同一存储桶中的所有条目,并在每个条目上调用 equals 以找到您请求的条目。这就是为什么
The time to find the value from HashMap with a Person key depends on the size of the map.
是正确答案
这不是错误的哈希码,而是糟糕的哈希函数。无论对象是什么,它都试图生成相同的哈希键。
由于我们生成了相同的哈希码,因此发生了冲突。冲突解决技术之一是链接。因此,添加到地图中的所有对象都将链接到一个桶中。所以我们需要遍历链来获得正确的对象因此答案