搜索在Java中搜索嵌套对象的逻辑是什么?
我有一个对象结构的人如下,我想搜索一个人的基础上,他的名字
public Person{
String name;
List<Person> person;
}
我们如何实现这个搜索方法
将有一个根对象,即Person,它与其他人有链接,依此类推
而且人名是独一无二的
搜索签名可能是
public Person findPerson(Person root, String name){
}
有人能提出其他解决方案吗
# 1 楼答案
您将需要递归。迭代列表中的所有人员,并在该人员中搜索同一目标。找到目标后,返回并停止所有搜索
下面是一些伪代码:
# 2 楼答案
您将需要访问每个人,每个人持有的每个人,这很容易使用递归算法实现,因此是深度优先
有一件事需要考虑:你知道名字是唯一的吗?如果没有,您将需要返回匹配人员的列表,如果您想对姓名进行模式匹配,那么这可能是最合适的:所有姓氏为“Smith”的人员
# 3 楼答案
你可以使用反射。在运行时检查Person的实例是否具有Person类型的变量,然后调用其getter。以递归的方式来最小化和优化代码