如何根据人名找到人

时间:2014-01-19 15:21:22

标签: java

我有一个Person数组,我想根据它的名字找到特定的Person。 我怎么能这样做?

// Person
public class Person {
    String name;
    private Person [] adjacent;
    public int adjacentCount;

    public Person(String n){
        this.name=n;
    }

    public void addAdjacent(Person x){
        if(adjacentCount<30){
            this.adjacent[adjacentCount]=x;
            adjacentCount++;
        } else {
            System.out.println("No more adjacent can be added");
        }
}
    public Person[] getAdjacent(){
        return adjacent;
    }

    public String getName(){
        return name;
    }
}

现在我们需要将人员添加到图表中,然后将方法添加到另一个方法,现在我想知道如果我们只知道它的名字,如何从图中知道这个人

public void addFriendship(String name1, String name2){

}

1 个答案:

答案 0 :(得分:1)

假设您假设您可以从一个根到达每个其他人(假设它是一个任务)。你遇到的第一个问题是你应该期待很多循环依赖。例如A是B的朋友,B很可能是A的朋友。另外如果A是C的朋友,那么C很可能是B的朋友。你需要一种遍历Graph访问的方式每个节点只有一次。

执行此操作的标准解决方案是使用IdentityHashMap(您说过您不能使用),但您可以实现自己的(有点痛苦但可行)这可以跟踪您看到的每个节点,以避免在循环中四处转转。


我会保留一个Map<String, Person>,这样你就可以按姓名查找一个人。

像这样的图形的问题是你需要不能假设每个人都与其他人相连。即不是每个人都可以到达。也知道什么时候停下来很棘手。

BTW我建议你看看neo4j,这是一个非常酷的图表数据库。