|
|
1
0
你觉得呢
如果你只是问为什么开发商
|
|
|
2
0
从hashset获取数据的时间复杂度是O(1),而数组的时间复杂度是O(n)。天真地说,人们可能会认为hashset的性能会更好。但没那么简单。计算哈希代码的成本相对较高,而且每个类都提供自己的哈希算法,因此哈希分布的运行时间和质量可能会有很大的差异(一个类为每个对象返回相同的哈希值是低效的,但却是完全合法的。存储此类对象的基于哈希的集合将退化为数组性能。)
底线。。。如果性能很重要的话,忘掉Big O,相信你的基准。 |
|
|
3
0
使用字典的原因是因为它写得很好,经过了很好的测试,已经完成了,而且很有效。 替换与已添加的键关联的值时,代码出现问题。以下代码:
至于数组的使用,HashSet和Dictionary都在实现中使用它们。 哈希集
字典
HashSet和Dictionary不会通过它们的数组循环查找键/值。它们使用hashcode值的模来直接索引到bucket数组中。bucket数组中的值指向slot或entries数组。然后,它们在具有相同哈希码或冲突哈希码的键列表上循环(两个不同的哈希码在应用模后产生相同的值)。这些小冲突列表位于slot或entries数组中,通常非常小,通常只有一个元素。 为什么字典不直接实现在HashSet上?因为这两个班做两件不同的事。HashSet旨在存储一组唯一的密钥。字典面向存储与唯一键相关的值。您试图使用HashSet来存储一个值,方法是将它嵌入到键(这是一个对象)中。但我指出了为什么这行不通。这是因为HashSet不接受值的概念。它只关心钥匙。所以不适合当字典用。现在,您可以使用Dictionary来实现HashSet,但这将是一种浪费,因为Dictionary中有专门用于处理值的代码和内存。有两个类,每个类都是为了实现一个特定的目的。它们很相似,但不一样 |
|
4
-1
实现的问题是HashSet只存储指定键的一个条目,在本例中是hash值。因此,如果调用者希望向字典中添加两个恰好具有相同哈希值的条目,则只存储第一个条目,而忽略第二个条目。 字典通常实现为与哈希值匹配的条目列表,这样就可以有多个具有相同哈希值的条目。这确实使它更加复杂,因为在添加/删除/查找时,您需要处理列表。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |