在Java中搜索嵌套对象的逻辑是什么?

时间:2013-10-17 05:39:27

标签: java search data-structures

我有一个Person的对象结构,如下所示,我想根据他的名字搜索一个人。

public Person{

   String name;

   List<Person> person;

}

我们如何为此实现搜索方法?

将有一个根对象是Person,它与其他人有链接等等。

人员的名字是独一无二的。

搜索签名可以是

public Person findPerson(Person root, String name){

}

我可以将其视为thisthis

有人可以为此建议任何其他解决方案吗?

3 个答案:

答案 0 :(得分:5)

你需要递归。迭代列表中的所有人,并在该人中搜索相同的目标。找到目标后,返回并停止所有搜索。

这是一些伪代码:

Person search(Person, Name)
    if (Person.Name == Name) return Person;
    for each subPerson in Person.person:
        Person found = subPerson.search(Person, Name);
        if (found != null) return found;
    return null;

答案 1 :(得分:2)

您将需要访问每个人,每个人都拥有,这很容易使用递归算法实现,因此深度优先。

要考虑的一件事:你知道名字是独一无二的吗?如果不是,你将需要返回一个匹配人员列表,如果你想对名称进行模式匹配,那么这可能是合适的:所有姓氏为“史密斯”的人

答案 2 :(得分:0)

你可以使用反射。在运行时检查Person的实例是否具有Person类型的变量,然后调用其getter。以递归方式执行以最小化和优化代码。