.net - 是否有一个带有键/值对的通用集合,其中键可以出现多次?

标签 .net dictionary generic-collections

我想使用像 Dictionary 这样的通用集合,但是 Dictionary要求每个键都是唯一的。我有同一个“键”的多个值,所以我需要一个通用集合来实现这一点。

我意识到这使得 key 不再是真正的 key ,但我不知道还能叫它什么。

最佳答案

几个选项供您考虑:

  • 使用 Dictionary<TKey, List<TValue>> — 为每个键保留一个值列表,不防止重复 相同键的值(即重复对);
  • 使用 Dictionary<TKey, HashSet<TValue>> — 为每个键保留一组值,防止重复值 对于相同的 key ;
  • 使用 List<KeyValuePair<TKey, TValue>> — 保留对列表,不防止重复 相同键的值。

  • 请注意,在后一种情况下 KeyValuePairstruct ,不是 class ,因此这意味着有点不同的处理。

    正确的选项取决于您的实际用例。

    关于.net - 是否有一个带有键/值对的通用集合,其中键可以出现多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5174309/

    相关文章:

    C# 覆盖公共(public)成员并将其设为私有(private)

    c# - 如何检查重复键并从字典中删除以前的值?

    python - 在字典中搜索比在列表中搜索更快吗?

    C#高效存储大int数据

    c# - 如何使用 IEnumerable.GroupBy<T> 和 3 个不同的 "qualities"在 C# LINQ 中获取计数?

    .net - 在 Visual Studio 中使用快捷方式自动生成代码?

    c# - Sqlite数据库中的加密和解密?

    .net - 在批处理脚本中使用 Powershell 的 SFTP

    c# - C# 中的排序列表替代项

    java - "Unchecked generic array creation for varargs parameter of type Matcher <? extends String> []"警告使用 CoreMatchers.allOf()