gpt4 book ai didi

java - 您将如何交叉引用两个 ArrayList 的字符串变量以返回这些字符串的对象?

转载 作者:行者123 更新时间:2023-11-29 05:13:10 25 4
gpt4 key购买 nike

我有两个对象数组列表:

Node(int id, String name, double pValue)

Edge(String node1, String node2, String type)

然而,为了向我的图形添加边,代码如下所示:

main.addEdge(Edge e, Node n1, Node n2)

因此,我正在使用一个交互器来添加边:

Iterator<Edge> eIt = edges.iterator();
while(eIt.hasNext()){

Node n1, n2;

n1 = ?; //Code in question

n2 = ?; //And here too

mainGraph.addEdge(eIt.next(), n1, n2);
}

如何将 eIt.next().getNode1()/getNode2() 与包含节点的 ArrayList 交叉引用,以便返回对象 Node匹配的名字?

最佳答案

根据您的数据结构的描述,您必须遍历整个 Node列表以查找请求名称的两个节点。

如果您维护 HashMap<String,Node>,您可以提高搜索效率给你一个Node通过它的名字。然而,这真的没有必要。

相反,我建议您使用 Edge类持有对其两个 Node 的引用s 而不是那些节点的名称。它不仅需要更少的存储空间,还可以避免按名称搜索节点的需要。

将您的 Edge 更改为:

Edge(Node node1, Node node2, String type)

那么你的代码会很简单:

Iterator<Edge> eIt = edges.iterator();
while(eIt.hasNext()){
Edge e = eIt.next();
mainGraph.addEdge(e, e.getNode1(), e.getNode2()); // actually, you can change
// addEdge to require just
// the Edge, since it already
// contains the Nodes
}

关于java - 您将如何交叉引用两个 ArrayList 的字符串变量以返回这些字符串的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com