一个面试题目,请高手进来看一下!
今天去面试,面试官出的题目是一张部门表,里面有三个字段,一个是ID,一个是部门名称,还有一个是上级部门的ID,他的要求是用一种方法以树的形式在后台展现出来以方便在前台显示,我当时是用的hibernate的树状映射,但面试的时候他说这不是他想要的答案,最后我们所有同学都面试完了,只有一个同学的答案是他想要的,我问那个同学,他说用什么结构、类什么的,还有什么二维数组一样,具体的他也没给我说清楚,所以想请教一些这里的高手,这个到底怎么实现?就是用结构啊类啊什么的,这个问题不搞清楚的话我这心里就始终不舒服,麻烦哪个高手指点一下了,谢谢!
------解决方案--------------------HashMap<String id,HashMap>这个数据结构可以解决了,如果有子节点就添加到HashMap。
如:有父节点parentID, 子节点ID1,ID2,ID3
HashMap childHashMap;
childHashMap.put(ID1,Object);
childHashMap.put(ID2,Object)
childHashMap.put(ID3,Object)
parentHashMap.put(ParentID,childHashMap);
------解决方案--------------------类:属性对应数据库
数组:存储类的对象,有一个对象加载进来时,从数组里找到父结点,修改其父结点标志(这里方法很多,可以是父结点在数据中的下标),可以是父结点的引用等。
甚至还可以使用多叉树等,树的结构存储方法很多。
还要考虑到数据的加载是否动态加载,递归查询如在Oracle里可以直接使用数据库提供的功能实现递归查询,但是其他很多数据库不支持递归查询,这个时候就需要其他的方法来查询。
以前做过一个上下级无限制级数的系统,就使用过上面提到的这些。