【发布时间】:2016-02-18 02:13:07
【问题描述】:
我们有一个看起来像“递归”数据结构的对象。
假设我们有一个结构如下的 Person 对象
public class Person {
private String id;
private Map<String,Person> persons;
public Person(String id, Map<String,Person> persons){
this.id = id;
this.persons = persons;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Map<String, Person> getPersons() {
return persons;
}
public void setPersons(Map<String, Person> persons) {
this.persons = persons;
}
@Override
public String toString() {
return "Person [id=" + id + ", persons=" + persons + "]";
}
}
此对象的示例表示形式是:(示例数据)
Person p1 = new Person("Jim", ImmutableMap.of("A001",new Person("Mike",ImmutableMap.of("D001",new Person("Jack",ImmutableMap.of("E001",new Person("Kim",null))))),
"Z001",new Person("Adam",ImmutableMap.of("Y001",new Person("Eve",ImmutableMap.of("X001",new Person("Dave",null)))))));
注 1:ImmutableMap 来自 google guava 集合
注意 2:假设 Person 对象中 Map 的“键”是人名。
给定一个人的名字,迭代和获取 id 的最有效方法是什么。?
例如,如果输入是'Eve',输出应该是'Y001'
【问题讨论】:
-
是否允许人们在
persons地图中直接或间接地拥有彼此? -
那么到目前为止你尝试过什么?