ric*_*ard 8 .net dictionary generic-collections
我想使用类似的泛型集合Dictionary,但Dictionary要求每个键都是唯一的.我有相同"密钥"的多个值,所以我需要一个允许的通用集合.
我意识到这使得钥匙不再是钥匙,但我不知道还有什么可以称之为钥匙.
Ond*_*cny 18
您可以考虑几个选项:
Dictionary<TKey, List<TValue>>- 保留每个键的值列表,而不是阻止相同键的重复值(即重复对);Dictionary<TKey, HashSet<TValue>>- 为每个键保留一组值,防止同一个键的重复值 ;List<KeyValuePair<TKey, TValue>>- 保留对列表,不要阻止同一个键的重复值.注意,在后一种情况下KeyValuePair是a struct,而不是a class,因此意味着有点不同的处理.
正确的选项取决于您的实际用例.
在.NET 3.5及更高版本中,即ILookup<TKey,TValue>.不幸的是,唯一提供的实现是不可变的Lookup<TKey,TValue>,但是很容易重新实现.An EditableLookup<TKey,TValue>包含在MiscUtil中.
使用a ILookup<TKey,TValue>,TKey索引器返回一个IEnumerable<TValue>(即使该键没有匹配项),所以典型的用法是:
foreach(var value in lookup[key])
DoSomethingWith(value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5218 次 |
| 最近记录: |