如何在 c# 中使用 Java 的 map get() 方法
本文关键字:map get 方法 Java | 更新日期: 2023-09-27 18:31:39
我有一个给定的任务是将Java代码转换为C#。
这是以下 Java 代码:
public void addEdge(String node1, String node2) {
LinkedHashSet<String> adjacent = map.get(node1);
if(adjacent==null) {
adjacent = new LinkedHashSet();
map.put(node1, adjacent);
}
adjacent.add(node2);
}
这是我的 C# 代码:
public void addEdge(string node1, string node2) {
if (map.ContainsKey(node1)){
OrderedSet<string> adjacent = map[node1];
if (adjacent == null)
{
adjacent = new OrderedSet<string>();
map.Add(node1, adjacent);
}
adjacent.Add(node2);
}
else
throw new Exception(String.Format("Key {0} was not found", node1));
}
当我运行该程序时,我得到以下异常:"字典中不存在给定的键"
我的错误在哪里?
编辑1:在这里我声明了地图:
private Dictionary<string, OrderedSet<string>> map = new Dictionary<string, OrderedSet<string>>();
编辑2:我在以下行中得到异常:
map.Add(node1, adjacent);
愚蠢的
投票反对,真正的代码是
public void addEdge(string node1, string node2) {
OrderedSet<string> adjacent = map.ContainsKey(node1) ? map[node1] : null;
if (adjacent == null)
{
adjacent = new OrderedSet<string>();
map.Add(node1, adjacent);
}
adjacent.Add(node2);
}
而且效果很好
我不明白你为什么会得到 字典异常中不存在给定键,但您应该更改:
map.Add(node1, adjacent);
自:
map[node1] = adjacent;
Add 方法将引发异常,如果尝试添加已存在的键。
get 方法 在 Java 中等效于 C#地图。包含密钥(节点 1) ?映射[节点 1] : 空;