C# Java HashMap 等价物

标签 c# java hashmap

从 Java 世界进入 C# 世界是否存在等效的 HashMap?如果没有,你会推荐什么?

最佳答案

Dictionary可能是最接近的。 System.Collections.Generic.Dictionary 实现 System.Collections.Generic.IDictionary接口(interface)(类似于Java的Map接口(interface))。

您应该注意的一些显着差异:

  • 添加/获取项目
    • Java 的 HashMap 具有用于设置/获取项目的 putget 方法
      • myMap.put(key, value)
      • MyObject 值 = myMap.get(key)
    • C# 的字典使用 [] 索引来设置/获取项目
      • myDictionary[key] = value
      • MyObject 值 = myDictionary[key]
  • null
    • Java 的 HashMap 允许空键
    • 如果您尝试添加空键,
    • .NET 的 Dictionary 会抛出 ArgumentNullException
  • 添加重复键
    • Java 的 HashMap 会将现有值替换为新值。
    • 如果您使用 [] 索引,
    • .NET 的 Dictionary 会将现有值替换为新值。如果您使用 Add 方法,它会改为抛出 ArgumentException
  • 尝试获取不存在的 key
    • Java 的 HashMap 将返回 null。
    • .NET 的 Dictionary 将抛出 KeyNotFoundException。您可以使用 TryGetValue方法而不是 [] 索引来避免这种情况:
      MyObject 值 = null; if (!myDictionary.TryGetValue(key, out value)) {/* 键不存在 */}

Dictionary 有一个 ContainsKey可以帮助解决前两个问题的方法。

关于C# Java HashMap 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1273139/

相关文章:

java - 是否应避免 Hibernate 双向关联?

java - 在 HashMap 中查找值的数量?

c# - 如何检查 ApplicationUser 是否有声明

c# - 未找到时区区域

c# - 类库找不到 MembershipUser

java - Android工作室错误: An error occurred while trying to compute required packages

java - 使用 proguard 混淆 Parcelable 类

java - Groovy中HashMap的点积

java - 按标准排序的 5 个项目的分组

c# - List<T> 到 DataView