gpt4 book ai didi

java - 存储节点关系并计算节点数量

转载 作者:行者123 更新时间:2023-12-01 14:01:55 25 4
gpt4 key购买 nike

在Java应用程序中,我需要一个结构来存储,我们称它们为节点,以及与其他节点的关系数量。例如,我需要知道节点 A 与 B 关联 3 次。

思考实现这一点的方法,我得到了这个可能的解决方案:有一个使用节点作为键的 HashMap ,另一个使用另一个 HashMap 作为值的 HashMap 。该 HashMap 将节点存储为键(示例中的节点 B),并将整数存储为表示关系数量的值。

你对此有何看法?这是一个好方法吗?

如果是的话,我有一个问题。假设我存储字符串,并且它们来自应用 String.split 函数后的文本文件。现在我将“hello”存储在第一个 HashMap 中,但在处理文件后,该字符串在第二个 HashMap 中显示为命运节点。这些字符串是否会引用同一对象,或者我将拥有同一对象的多个副本?

最佳答案

关于第一个问题,我会做一些类似但不同的事情。而不是创建 Hashmap里面 Hashmap我将创建一个新类(class) Relationship看起来像这样:

public class NodeRelationship {
private Node relatedNode;
private int numOfRelations

// Constructor + getters and setters
}

并像这样定义你的 map :Map<Node, List<NodeRelationship>>这对我来说似乎更具可读性(但也许只是我)并且更容易以后使用。例如,如果您迭代列表并想知道原始节点,您可以添加成员 parentNodeRelationshio等等。

关于第二个问题 - 这取决于您如何创建对象以及您是创建新对象还是使用现有对象。如果你有一个节点hello您输入的值 Hashmap (或者在我的解决方案中的 List 中)并且您使用相同的对象来创建新 key - 因此没有重复。如果您没有办法(或者只是不搜索)来知道该节点已经创建,并且您创建了新节点 - 那么您将拥有重复的对象。

如果您的每个节点确实是从文本字符串创建的,您可以维护一个新的 Map<String, Node>在读取文件的过程中,您可以维护此映射并在创建新对象之前检查对象是否存在。这在性能方面的成本非常低,一旦完成从文本构建对象,您就可以摆脱 map 。

关于java - 存储节点关系并计算节点数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19291018/

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