来自具有不同ID的相似字符串的唯一节点ID

时间:2018-08-20 13:30:47

标签: java c# treeview

我有一个看起来像这样的字符串列表(只有结构很重要;它们可以由下划线分开):

aaa_bbb_ccc
aaa_bbb_ddd
aaa_bbb_ddd_eee
bbb_ddd_eee

通过基于下划线创建父子关系,将列表转换为树。例如,树将有2个节点aaabbb,然后每个父节点将分别有一个子节点bbbddd,依此类推。

每个字符串都有一个唯一的ID(例如,第一行具有ID 1,第二行具有ID 2等),但是我还需要为每个不同的节点提供一个唯一的ID。我的想法是给每个节点与产生它的字符串相同的ID。即aaabbbccc都获得ID1。当第二行被分割时,我可以给ddd ID 2,但是aaa和{{1 }}不能有2个ID,因为它们已经有1个ID。

是否存在一致的方式,以便在将字符串列表转换为树后,每个节点都可以接收唯一的ID?一致的意思是,由于不同的ID,从节点重新构建字符串和恢复字符串ID不会有冲突。如果没有一致的方法,是否可以将这种方法视为一种好的做法(假设如果节点具有ID​​,则不会用新的ID对其进行更改,并且可能不需要恢复字符串)?

编辑:我无法将文本(例如bbbaaa)用作ID,因为bbb的子项bbb最终将具有与父项相同的ID aaa(在第四行)。

1 个答案:

答案 0 :(得分:0)

我有treeView和同样的问题,但是对于我的域,我决定设置一个递增数形式,例如添加到树中的每个节点,我递增数并将其设置为id,并且我有一个数据值来指定节点是其他节点的父节点,为了进行搜索,我将其用作数据。

但是如果您想要一个节点顺序值,我建议您使用id和一个第二个必须填充的值

                            playSound("sounds/English");
                            soundTarget.Play();

                        if (soundTarget.isPlaying)
                        {
                            soundTarget.Stop();

                        }
                        else
                        {
                            soundTarget.Play();

                        }
 But this code is just looping around and doesn't play the sound.

并且您必须更新此值,如果父级更改至少不难,则必须更改此值

它也可以为您保存订单