C# Java HashMap equivalent(C# Java HashMap 等价物)
本文介绍了C# Java HashMap 等价物的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
从 Java 世界进入 C# 世界是否存在等效的 HashMap?如果没有,你会推荐什么?
Coming from a Java world into a C# one is there a HashMap equivalent? If not what would you recommend?
推荐答案
Dictionary
可能是最接近的.System.Collections.Generic.Dictionary
实现 System.Collections.Generic.IDictionary
接口(类似于 Java 的 Map
接口).
您应该注意的一些显着差异:
Some notable differences that you should be aware of:
- 添加/获取项目
- Java 的 HashMap 具有用于设置/获取项目的
put
和get
方法myMap.put(key, value)
MyObject 值 = myMap.get(key)
- Adding/Getting items
- Java's HashMap has the
put
andget
methods for setting/getting itemsmyMap.put(key, value)
MyObject value = myMap.get(key)
myDictionary[key] = value
MyObject 值 = myDictionary[key]
- Java 的
HashMap
允许空键 如果您尝试添加空键, - .NET 的
Dictionary
会抛出ArgumentNullException
- Java's
HashMap
allows null keys - .NET's
Dictionary
throws anArgumentNullException
if you try to add a null key
- Java 的
HashMap
会将现有值替换为新值. 如果您使用 - .NET 的
Dictionary
将用新值替换现有值.如果您使用Add
方法,它会改为抛出ArgumentException
.
[]
索引,- 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 theAdd
method, it will instead throw anArgumentException
.
- Java 的
HashMap
将返回 null. - .NET 的
Dictionary
将抛出KeyNotFoundException
.您可以使用TryGetValue
方法而不是[]
索引以避免这种情况:MyObject 值 = null;if (!myDictionary.TryGetValue(key, out value)) {/* 键不存在 *
- Java's HashMap has the
- Java 的 HashMap 具有用于设置/获取项目的
沃梦达教程
本文标题为:C# Java HashMap 等价物
基础教程推荐
猜你喜欢
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 降序排序:Java Map 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01