经常遇到一个java类含有属性是自己类的情况,这个时候如果要取出一个对象的某个值,就可能考虑使用递归算法。
首先有这样一个java类
<pre name="code" class="java">public class Person{
private String name;
private int age;
private List<Person> children = new ArrayList<Person>();
public Person(){};
public void addChild(Person p){
children.add(p);
}
//系列setters 和 getters方法
public List<Person> getChildren(){ return this.children;}
public void setChildren(List<Person> children){this.children = children;}
}
现在有一个Person对象,Person p1 = new Person(); 该p1包含1个children属性,该children包含多个Person对象,每个Person对象中又有一个children属性.............,如此就会有很多个Person对象,如果想得到所有Person的name属性,则就可以考虑使用递归算法。
public List<String> queryName(List<String> nameList,Person person){
Iterator<Person> it = person.getChildren().iterator();
while(it.hasNext()){
Person p = it.next();
nameList = queryName(nameList,p);
if(!p.getName().equals(""))
nameList.add(p.getName());
}
return nameList;
}