|
1
2
串接的字符串应该工作得最好。 如果您知道它们的组合是唯一的,那么这就是您应该选择的——记住哈希代码是 通常 独一无二,但并非总是如此。 |
|
|
2
2
如果可以适当地重写getHashCode()和equals(),也就是说,可以使用选项3:
|
|
|
3
1
我会说选项1。 |
|
|
4
1
使用keyobj.gethashcode()怎么样? |
|
|
5
1
它们中的任何一个都是有效的,但我假设您希望能够基于两个字符串中的一个快速找到这些对象,因此使用int作为键意味着您仍然需要扫描这些值以找到所需的对象。 字符串是否都是唯一的,或者只有在组合时才是唯一的?如果它们都是独一无二的,而且你愿意交换一点空间,你可以这样做:
并且有两个对字典中的对象的引用,使用每个唯一的字符串作为键。或者,如果字符串只在一起是唯一的,则可以将它们组合在一起,并在内部使用哈希代码来查找它们。 |
|
|
6
1
将它们串联起来可能是最好的主意。可以在中公开属性
编辑:
我显然误解了这个问题。我认为你真正想做的是1和3的混合,你可以覆盖
然后您可以使用建议的第三个选项:
|
|
|
7
0
您不需要使用新类作为字典键。使用一个新的结构,因为它会更轻…显然,它由这两个字符串值组成。 |
|
|
8
0
如果性能是主要考虑因素,可以考虑使用两个字符串的哈希值。但是“value”字段必须同时包含键和值。 我提到了另一个这样的问题,我只需要找到它。 Is it faster to search for a large string in a DB by its hashcode? 但这个问题更倾向于数据库。性能被考虑数千次迭代。 |
|
|
9
0
请记住,字典是一个美化的哈希表,因此键(没有双关语)是使用一个键,这将导致很少(如果有的话)与另一个键发生冲突。我倾向于3,但这是假设keyobj类型有一个好的散列值生成器。 |
|
|
10
0
字符串作为键是最好的,请参阅我的测试代码: var tuplekeydict=新字典,字符串>();
输出: Tuplekey成本(勾号):104 tuplekey成本(ms):0 strkey成本(tick):12 strkey成本(ms):0 内部成本(勾号):66 Intkey成本(ms):0 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |