首页 / JAVA / 从平面列表创建Java层次结构树集
从平面列表创建Java层次结构树集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从平面列表创建Java层次结构树集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1258字,纯文字阅读大概需要2分钟。
内容图文
![从平面列表创建Java层次结构树集](/upload/InfoBanner/zyjiaocheng/705/f9c56e5df7e14a7eaa97a2025367527e.jpg)
我有对象列表T,它有一个父属性,其中顶级对象父属性为null.我想将所有对象放入TreeSet(或TreeMap)中.顶级对象将是没有父级的所有根对象(父级为空),并且他们的子级将在其下.
像这样的东西
o
/ | Ra Rb Rc -- Level Root Objects
/ | \ | Ca1 Ca2 Cb1 Cc1 Cc2 -- Level of First Children
/ Ca11 Ca12.............. -- Level of Second Children
所以我可以得到Ra并找到它的孩子(Ca1,Ca2,Ca11,Ca12 ….)
更新:
抱歉,可能是不清楚,节点指向父节点,如果父节点为空,则它们是根节点.问题是父母需要了解自己的孩子.但这种关系是相反的.
class Node
{
private Node parent;
private String name;
}
解决方法:
我想你可能不清楚TreeSet在Java中做了什么. TreeSet只是Set接口的一个实现,它在内部使用树.同样适用于TreeMap.它不是一个通用树结构,允许您从父母到孩子.它使用树的事实严格地说是内部实现的细节.
我知道你有一堆对象,每个对象都有一个“父”对象的引用.那些“父”链接形成一棵树,但你想要从父母到孩子,而不是相反的方向(这很容易).
在这种情况下,我可能会遍历对象列表并构建从父对象到子列表的Map.就像是:
Map<Node,List<Node>> tree = new HashMap<Node,ArrayList<Node>>();
List<Node> roots = new ArrayList<Node>();
for(Node n : nodes) {
if(n.parent == null)
roots.add(n);
else {
if(!tree.containsKey(n.parent))
tree.put(n.parent, new ArrayList<Node>());
tree.get(n.parent).add(n);
}
}
内容总结
以上是互联网集市为您收集整理的从平面列表创建Java层次结构树集全部内容,希望文章能够帮你解决从平面列表创建Java层次结构树集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。