JUNG库可以基于预定义的属性制作边线吗?

时间:2019-05-29 07:35:25

标签: java graph jung

我有一些数据,例如“人”类型。此人具有电话号码属性,但也有呼叫和被叫电话号码属性。

# Calculating Euclidean distance between two points
def euclidean_dist(x,y):
  dd = 0.0
  #len(x) is number of dimensions. Basically x and y is a 
  #list which contains coordinates of a point
  for i in range(len(x)):
    dd = dd+(x[i]-y[i])**2
  return dd**(1/2)

# Calculating the desired solution to our problem
def dist(l1,l2):
  min_dd = 0.0
  dd = euclidean_dist(l1[0],l2[0])
  for j in range(len(l1)):
    for k in range(len(l2)):
      temp = euclidean_dist(l1[j],l2[k])
      if dd > temp:
        dd = temp
    min_dd = min_dd+dd
    dd = euclidean_dist(l1[j],l2[0])
  return min_dd  

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

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

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

我是JUNG的新手,但是也许有一种方法可以向JUNG讲述Person的属性,并且JUNG知道如何连接它们?

荣格这可能吗?还是我需要另一种类型的库(如果是),那么有人可以提供给我我可以使用的库吗?

1 个答案:

答案 0 :(得分:1)

这就是我要做的:

将每个人的电话号码(键)的java.util.Map映射到Person(值)的实例。那就是你的反向号码查询。 通过使用PhoneNr作为键并将Person实例作为值来遍历人员集合,从而填充反向号码查找图。

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

要向图形添加边,请遍历Person实例的集合,并为每个Person遍历呼叫号码的集合。对于每个呼叫号码,请使用反向号码查找图来获取该呼叫者,并进行定向处理以将呼叫者连接到当前呼叫者。 对每个人的被叫号码集合执行类似的操作。 您的图节点将是Person实例,而您的边缘将是将一个Person连接到另一个Person的PhoneCall实例。请确保在您的Person类和PhoneCall类中添加一个equals和hashCode方法,以便它们可以正常工作(并且重复项将被检测到并有望被忽略)。

希望这会有所帮助!