我有一些数据,例如“人”类型。此人具有电话号码属性,但也有呼叫和被叫电话号码属性。
# 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知道如何连接它们?
荣格这可能吗?还是我需要另一种类型的库(如果是),那么有人可以提供给我我可以使用的库吗?
答案 0 :(得分:1)
这就是我要做的:
将每个人的电话号码(键)的java.util.Map映射到Person(值)的实例。那就是你的反向号码查询。 通过使用PhoneNr作为键并将Person实例作为值来遍历人员集合,从而填充反向号码查找图。
接下来,我将创建一个边缘类“ PhoneCall”,其中包含诸如“通话时间”和“通话时间”之类的信息(或多或少的信息,取决于您的可用状态)。
要向图形添加边,请遍历Person实例的集合,并为每个Person遍历呼叫号码的集合。对于每个呼叫号码,请使用反向号码查找图来获取该呼叫者,并进行定向处理以将呼叫者连接到当前呼叫者。 对每个人的被叫号码集合执行类似的操作。 您的图节点将是Person实例,而您的边缘将是将一个Person连接到另一个Person的PhoneCall实例。请确保在您的Person类和PhoneCall类中添加一个equals和hashCode方法,以便它们可以正常工作(并且重复项将被检测到并有望被忽略)。
希望这会有所帮助!