相当于C#Java HashMap
从Java世界进入C#,是否有等效的HashMap?如果没有,您会推荐什么?
回答:
Dictionary
可能是最接近的。System.Collections.Generic.Dictionary
实现System.Collections.Generic.IDictionary
接口(类似于Java的Map
接口)。
您应该注意一些明显的区别:
- 添加/获取项目
- Java的HashMap具有用于设置/获取项目的
put
和get
方法 myMap.put(key, value)
MyObject value = myMap.get(key)
- C#的词典使用
[]
索引来设置/获取项目 myDictionary[key] = value
MyObject value = myDictionary[key]
- Java的HashMap具有用于设置/获取项目的
null
键- Java
HashMap
允许空键 - 如果您尝试添加空键,.NET会
Dictionary
引发ArgumentNullException
- Java
- 添加重复密钥
- Java
HashMap
将用新值替换现有值。 Dictionary
如果使用[]
索引,.NET 将用新值替换现有值。如果使用该Add
方法,它将抛出一个ArgumentException
。
- Java
- 尝试获取不存在的密钥
- Java
HashMap
将返回null。 - .NET
Dictionary
会抛出一个KeyNotFoundException
。您可以使用该TryGetValue
方法而不是[]
索引来避免这种情况:MyObject value = null; if (!myDictionary.TryGetValue(key, out value)) { /*
key doesn't exist */ }
- Java
Dictionary
的ContainsKey
方法可以帮助解决前面的两个问题。
以上是 相当于C#Java HashMap 的全部内容, 来源链接: utcz.com/qa/424480.html