我有这样的层次结构:
Lot
|_Stages
|_Samples
示例:
Lot1
|_Stage1
|_Sample11
|_Sample12
|_Stage2
|_Sample21
|_Sample22
这个想法是用户将提供一个LotID,基于此我的SQL查询检索所有阶段以及每个阶段中的所有样本。
我将结果集中的每条记录保存为自定义对象,并将其添加到数组列表中。
结果集输出示例:
LotID || LotCondition || StageID || StageCondition || SampleID || SampleCondition
-------- || -------------- || ------------ || -------------------- || ------------ || ----------------
5001 ||处置|| 4001 ||完成|| 3001 ||批准
5001 ||处置|| 4001 ||完成|| 3002 ||批准
5001 ||处置|| 4002 ||完成|| 3003 ||批准
5001 ||处置|| 4002 ||完成|| 3004 ||批准
5002 || ReadyToRelease || 4003 ||完成|| 3005 ||批准
5003 ||处置|| 4004 ||完成|| 3006 ||批准
5004 ||处置|| 4004 ||完成|| 3007 ||批准
从这个数组列表中,我使用DefaultMutableTreeNode将对象添加到Tree(即new DefaultMutableTreeNode(custom_object.getLotID)..等)。
现在有两个问题:
只有一个唯一的LotID = 5001,但它显示4次(来自上面的示例),因为有4个样本,因此有4个记录。
我的目标是首先检索SampleID并将其添加到各自的StageID,最后将所有StageID添加到LotID(根节点)。我不知道如何以层次方式展示。
有人可以指出我正确的方向或一些想法吗?
答案 0 :(得分:0)
好的..我找到了一种方法来做到这一点,并认为我可能会分享它。我没有使用MutableTreeModel。
我决定创建循环,即在重试结果集时。例如:我获取Stages的结果集,并在其中尝试获取每个阶段中的所有Samples。
现在我有两个选项,一个是将这些结果集存储到DefaultMutableTreeNode中或者将它们存储在ArrayList和HaspMap中(例如:我可以为Stage ID创建一个HashMap作为我的键及其在ArrayList中的样本因为我们可以将除DefaultMutableTreeNode对象之外的任何类型的对象传递给TreeModel,我们可以传入这个HashMap对象并使用自定义TreeModel来处理它。这也需要我保存在Arraylists中的对象覆盖HashCode和Equals方法。
但我认为,对于我的应用程序,使用选项1很简单。