有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个对象结构的人如下,我想搜索一个人的基础上,他的名字

public Person{

   String name;

   List<Person> person;

}

我们如何实现这个搜索方法

将有一个根对象,即Person,它与其他人有链接,依此类推

而且人名是独一无二的

搜索签名可能是

public Person findPerson(Person root, String name){

}

我可以把它看作thisthis

有人能提出其他解决方案吗


共 (3) 个答案

  1. # 1 楼答案

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

    下面是一些伪代码:

    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;
    
  2. # 2 楼答案

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

    有一件事需要考虑:你知道名字是唯一的吗?如果没有,您将需要返回匹配人员的列表,如果您想对姓名进行模式匹配,那么这可能是最合适的:所有姓氏为“Smith”的人员

  3. # 3 楼答案

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