好的,我编辑了简短版本的帖子,我想询问有关 c# 中的方法:TryGetValue 和按比较(IComparator)排序列表。
我需要用 Java 编写此方法,所以我编写了此代码。问懂这两种语言的开发人员是正确的吗?
1)第一个问题 - TryGetValue是用Java编写的方法是一样的吗?C#:
Node value;
if (!nodes.TryGetValue(nodeId,out value)) return false;
到爪哇:
Node value;
if (!nodes.containsKey(nodeId)){
return false;
}else{
value = nodes.get(nodeId);
}
2)和 java 中的比较器排序工作相同吗?
static int compareNodes(Node n1, Node n2)
{
if (n1.f > n2.f) return 1;
if (n1.f < n2.f) return -1;
return 0;
}
list.Sort(compareNodes);
在Java中:
@Override
public int compare(Node nodeFirst, Node nodeSecond) {
if (nodeFirst.f > nodeSecond.f)
return 1;
if (nodeFirst.f < nodeSecond.f)
return -1;
return 0;
}
Collections.sort(nodeList, new OpenList());
快速浏览了一下您的代码后,我看不出它有任何真正的问题。虽然不能保证。
如果你真的想确定,你可能应该创建单元测试来验证 C# 和 Java 中的行为。这将需要更多的工作,但比依赖这里的评论要安全得多。