2013-02-14 65 views
3

Java有点新鲜。在相当成功之前,我已经使用了各种Java集合(treeset,hashmap,arraylist)。我的问题类似于类似Facebook的网络。我在会员组织中拥有不同的用户,并且我想为我们的会员中的每个人存储一个集合,其他成员通过兴趣链接到此成员。我认为最简单的解决方案将是为每个成员动态地分配一个名称为新的简单集合,这些成员将有其他成员名称(现有的或新的)链接,但是看起来Java不允许动态分配新集合。Java社交网络节点收集解决方案

我可以在哈希映射中列出所有与键名相关的名字,但这似乎是一个令人反感的解决方案。我认为这是一个具有优雅解决方案的社交常见网络问题。建议?

+1

“_JAVA不允许新collections_的动态分配” ** **错误。此外,你正在寻找一个图形结构。搜索维基百科的。 – jlordo 2013-02-14 22:19:21

回答

0

你为什么不把它建模成图形?

class Node { 
    private String name; 
    // TODO: Write your getters/setters. 
} 

class Edge { 
    private Edge source, destination; 
    // TODO: Write your getters/setters. 
} 

List<Node> nodes = new ArrayList<Node>(); 
List<Edge> edges = new ArrayList<Edge>(); 

然后,如果你遇到一个关系,你可以做到以下几点:

Node alice = new Node("Alice Kentucky"); 
if (!nodes.contains(alice)) { nodes.add(alice); } 
edges.add(new Edge(bob, alice)); // where Bob is already in the node list