【问题标题】:Can JUNG library make edges based on predefined properties?JUNG 库可以根据预定义的属性制作边吗?
【发布时间】:2019-05-31 01:42:55
【问题描述】:

我有一些比方说 Person 类型的数据。这个人有一个电话号码属性,还有一个主叫和被叫电话号码属性。

class Person {
   String id;
   String displayName;
   String phoneNr;
   String callingNr; // or List<String> callingNrs;
   String calledNr;  // or List<String> calledNrs;
}

我想要的是,我将一堆 Person 对象放在一个 Graph 实例中,然后在视图上呈现关系。理想情况下,在视图上绘制的组件是交互式的,这意味着您可以单击突出显示边缘(甚至更多)的节点/顶点。

我尝试过 JUNG,但在文档中,我看到了一些示例,我必须自己定义 Person 对象之间的关系,如下所示:

Graph.addEdge("edge-name", personA.phoneNr, personB.phoneNr);

我是 JUNG 的新手,但也许有办法告诉 JUNG Person 的属性,并且 JUNG 知道如何连接它们?

JUNG 能做到吗?或者我是否需要另一种类型的库,如果需要,有人可以提供我可以使用的吗?

【问题讨论】:

    标签: java graph jung


    【解决方案1】:

    我会这样做:

    将每个人的电话号码(键)创建一个 java.util.Map 到 Person 的一个实例(值)。那是您的反向号码查找。 通过使用 PhoneNr 作为键和 Person 实例作为值来迭代您的人员集合来填充您的反向号码查找映射。

    接下来,我将创建一个边缘类“PhoneCall”,其中包含“通话时间”和“通话持续时间”等信息(或多或少的信息,取决于您可用的信息)。

    要向图表添加边,请遍历您的 Person 实例集合,并为每个 Person 遍历呼叫号码的集合。对于每个主叫号码,使用反向号码查找图来获取主叫人并制作有向边以将主叫人连接到当前人。 为每个人的被叫号码集合做类似的事情。 您的图形节点将是 Person 实例,而您的边将是 PhoneCall 实例,将一个人连接到另一个人。请务必向您的 Person 类和您的 PhoneCall 类添加一个 equals 和 hashCode 方法,以便它们能够正常工作(并且可以检测到重复项并希望忽略它们)。

    希望这会有所帮助!

    【讨论】:

    • 谢谢!你知道我可以使用的一个例子吗?我真的很喜欢使用示例来更好地理解。无论如何,谢谢。
    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多