C#Java HashMap等效

问题:

从Java世界到C#一个是有一个HashMap等价的?如果不是你会推荐什么?

回答:

 Dictionary可能是最接近的。 System.Collections.Generic.Dictionary实现System.Collections.Generic.IDictionary接口(类似于Java的Map接口)。
您应该注意的一些显着的差异:

  • 添加/获取项目

     

    • Java’s HashMap has the put and get methods for setting/getting items
      • myMap.put(key, value)
      • MyObject value = myMap.get(key)
    • C#’s Dictionary uses [] indexing for setting/getting items
      • myDictionary[key] = value
      • MyObject value = myDictionary[key]
  •  null个键

     

    • Java’s HashMap allows null keys
    • .NET’s Dictionary throws an ArgumentNullException if you try to add a null key
  • 添加重复键

     

    • Java’s HashMap will replace the existing value with the new one.
    • .NET’s Dictionary will replace the existing value with the new one if you use [] indexing. If you use the Add method, it will instead throw an ArgumentException.
  • 试图获得不存在的密钥

     

    • Java’s HashMap will return null.
    • .NET’s Dictionary will throw a KeyNotFoundException. You can use the TryGetValue method instead of the [] indexing to avoid this:
      MyObject value = null;
      if (!myDictionary.TryGetValue(key, value)) { /* key doesn't exist */ }

 Dictionary有一个ContainsKey方法可​​以帮助处理前两个问题。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: C# Java HashMap equivalent

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

35 − 26 =