【问题标题】:Java: find parent and children ....Tree, Loop, ArrayList, List, HashMap, ....what to do?Java:查找父母和孩子......Tree,Loop,ArrayList,List,HashMap,......怎么办?
【发布时间】:2010-11-11 19:25:00
【问题描述】:

我受到这么多热心的 Java 专家的鼓舞,今天我敢于提出另一个问题寻求帮助(我所有的问题都来自现实生活中的项目——因为我正在走捷径学习 Java,所以我有更多比学习正常的 Java 课程更困难)..

这里是我要实现的数据结构(最终结果应该是一个以id为key的TreeMap)

id (int)   Characteristic (int)  parent(by id) immediate children (by id)
1           1                    {}            {2,3,4}
2           99                   {1}           {}
3           99                   {1}           {}
4           2                    {1}           {5,6}
5           99                   {2}           {}
6           3                    {2}           {7,8}
7           99                   {3}           {}
8           4                    {3}           {x,xx, ...}
....
....

前两列已知,后两列需要通过程序获取。

规则如下:

1) Characteristc 为 1 的项目是祖先,永远不会有父项。

2) Characteristic 为 99 的项目永远不会有子项。

3) 具有特征 (2 - 9) 的项目可以有父项和子项,并且它们的子项可以有子项(必须大于它们或 99)或没有子项 (99)。例如,2 可以有 99 和 3 作为孩子,但 3 不能有 2 作为他们的孩子)

谢谢

【问题讨论】:

  • 约翰,尽管我们可能是个热心肠...目前还不清楚实际问题是什么。
  • 亲爱的约翰,你确定这不是家庭作业吗?
  • 不,它来自我的小项目。 (我希望我能再次成为一名学生!)因为我熟悉 SAS,所以我更多地包括从数据集的角度思考......
  • 亲爱的 Carl,我假设我有一个前两列已知的数据集(id 和特征),我想找到最后两列。另请注意,每个项目的顺序也很重要。

标签: java hashmap treemap


【解决方案1】:

你不是在问问题,约翰。但是您需要在这里考虑面向对象。像这样创建一个类:

Item:
   int id
   int characteristic
   Item parent
   List<Item> children

无论您使用何种数据结构,您都可以使用上述对象。保持对象与数据结构分离很重要。您稍后可能会决定需要地图或树集。现在您所要做的就是创建一个包含所有 Item 对象的树集。

您的问题与树集无关,更多的是如何使用干净的面向对象创建这些对象。

【讨论】:

    【解决方案2】:

    您可能将树和地图的概念混为一谈。 Java Map 提供了一个接口,允许您使用(通常)另一种类型的对象作为键来映射一堆对象。在您的情况下,您似乎将使用 Longs 作为键。具体的 Map 可以是 HashMap 也可以是 TreeMap,它们各有优势—— HashMap 检索通常更快,但 TreeMap 具有排序键的优势。但是你不能强制 TreeMap 创建一个特定的树结构。它会自己管理它的树形。为了表示您的树项目,您需要某种树节点对象,支持 addChild、getChildren、getParent 等操作。如果您使用树节点对象构建树,那么您可以轻松地将这些对象添加到地图并通过 id 检索它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      相关资源
      最近更新 更多