相当于C#Java HashMap

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

回答:

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

您应该注意一些明显的区别:

  • 添加/获取项目

    • Java的HashMap具有用于设置/获取项目的putget方法
    • myMap.put(key, value)
    • MyObject value = myMap.get(key)
    • C#的词典使用[]索引来设置/获取项目
    • myDictionary[key] = value
    • MyObject value = myDictionary[key]

  • null

    • Java HashMap允许空键
    • 如果您尝试添加空键,.NET会Dictionary引发ArgumentNullException

  • 添加重复密钥

    • Java HashMap将用新值替换现有值。
    • Dictionary如果使用[]索引,.NET 将用新值替换现有值。如果使用该Add方法,它将抛出一个ArgumentException

  • 尝试获取不存在的密钥

    • Java HashMap将返回null。
    • .NET Dictionary会抛出一个KeyNotFoundException。您可以使用该TryGetValue方法而不是[]索引来避免这种情况:

      MyObject value = null; if (!myDictionary.TryGetValue(key, out value)) { /*

      key doesn't exist */ }

DictionaryContainsKey方法可以帮助解决前面的两个问题。

以上是 相当于C#Java HashMap 的全部内容, 来源链接: utcz.com/qa/424480.html

回到顶部