当前位置: 代码迷 >> J2SE >> 有一道Java面试题能不能帮小弟我看看
  详细解决方案

有一道Java面试题能不能帮小弟我看看

热度:100   发布时间:2016-04-23 20:03:26.0
有一道Java面试题能不能帮我看看?
今天online test,问了我一道Java面试题,‘Person’ class 有String name, int age, char sex, Person spouse, Person mother, Person father, List<Person> children, 让我写method,找到list of all older sisters和list of all ancestors,这道题主要想考察什么?怎么写比较好?
------解决思路----------------------
面向对象!
------解决思路----------------------
没看懂,不晓得什么意思
------解决思路----------------------
根绝Perso类的描述,它是树结构,有双亲有孩子。方法里面应该传入一个节点,题目让你找出该节点所有姐姐和所有祖先。
找姐姐的话需要判断一下性别和年龄,其他就与普通树的查找是一样的了
------解决思路----------------------

private String name;
private int age;
private char sex;
private Person spouse;
private Person mother;
private Person father;
private List<Person> children;

public List<Person> getSisters() {
List<Person> result = new ArrayList<Person>();
List<Person> a = father.getChildren();//这边不考虑同父异母或同母异父
for (Person c : a) {
if ("女".equals(c.sex) && (!this.name.equals(c.name))) {
result.add(c);
}
}
return result;
}

public List<Person> getAncestors() {
List<Person> result = new ArrayList<Person>();
getTheFather(result, this);
return result;
}

private void getTheFather(List<Person> list, Person son) {
Person f = son.father;
while(f != null) {
getTheFather(list, f);
}
}

------解决思路----------------------
祖先这边只考虑父亲、父亲的父亲、父亲的父亲的父亲。。。
------解决思路----------------------
应该是树的遍历那块的知识
------解决思路----------------------
引用:

private String name;
private int age;
private char sex;
private Person spouse;
private Person mother;
private Person father;
private List<Person> children;

public List<Person> getSisters() {
List<Person> result = new ArrayList<Person>();
List<Person> a = father.getChildren();//这边不考虑同父异母或同母异父
for (Person c : a) {
if ("女".equals(c.sex) && (!this.name.equals(c.name))) {
result.add(c);
}
}
return result;
}

public List<Person> getAncestors() {
List<Person> result = new ArrayList<Person>();
getTheFather(result, this);
return result;
}

private void getTheFather(List<Person> list, Person son) {
Person f = son.father;
while(f != null) {
getTheFather(list, f);
}
}


list of all older sisters
------解决思路----------------------
估计是想考递归吧,对父母这边进行递归查找所有的祖先,然后是利用父母的children链表来查找所有年龄比自身大的女性。不知道表姐堂姐算不算
------解决思路----------------------
mark
 Person f = son.father;看不懂,新人求问
------解决思路----------------------
除了楼上筒子们说的算法,还可以从设计模式角度阐发一下。
这个类的设计用到了组合模式,查找则可以通过在组合对象上提供标准的迭代器接口,使得不暴露集合内部的实现,就能够顺序访问集合中的各个元素。
这一部分可以看看《head first design patterns》组合与迭代器那一篇,里面的例子情境和这道题挺像。
《head first design patterns》下载:
http://download.csdn.net/download/shuchunsuper/4361346
------解决思路----------------------
递归调用以及collection的选择
------解决思路----------------------
会组成一颗树,根据树的支持查找兄弟节点,再找年龄比较大的。
再找全部先祖节点。
------解决思路----------------------
会组成一颗树,根据树的支持查找兄弟节点,再找年龄比较大的。
再找全部先祖节点。
------解决思路----------------------
会组成一颗树,根据树的支持查找兄弟节点,再找年龄比较大的。
再找全部先祖节点。
------解决思路----------------------
我就想问什么不能用中文的描述,出java 的考题呢?
------解决思路----------------------
引用:
我就想问什么不能用中文的描述,出java 的考题呢?


应该是个外企吧  假正经的
  相关解决方案