如何在 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);

如何在 c# 中使用 Java 的 map get() 方法

愚蠢的

投票反对,真正的代码是

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] : 空;