我有一个看起来像这样的字符串列表(只有结构很重要;它们可以由下划线分开):
aaa_bbb_ccc
aaa_bbb_ddd
aaa_bbb_ddd_eee
bbb_ddd_eee
通过基于下划线创建父子关系,将列表转换为树。例如,树将有2个节点aaa
和bbb
,然后每个父节点将分别有一个子节点bbb
和ddd
,依此类推。
每个字符串都有一个唯一的ID(例如,第一行具有ID 1,第二行具有ID 2等),但是我还需要为每个不同的节点提供一个唯一的ID。我的想法是给每个节点与产生它的字符串相同的ID。即aaa
,bbb
和ccc
都获得ID1。当第二行被分割时,我可以给ddd
ID 2,但是aaa
和{{1 }}不能有2个ID,因为它们已经有1个ID。
是否存在一致的方式,以便在将字符串列表转换为树后,每个节点都可以接收唯一的ID?一致的意思是,由于不同的ID,从节点重新构建字符串和恢复字符串ID不会有冲突。如果没有一致的方法,是否可以将这种方法视为一种好的做法(假设如果节点具有ID,则不会用新的ID对其进行更改,并且可能不需要恢复字符串)?
编辑:我无法将文本(例如bbb
,aaa
)用作ID,因为bbb
的子项bbb
最终将具有与父项相同的ID aaa
(在第四行)。
答案 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.
并且您必须更新此值,如果父级更改至少不难,则必须更改此值
它也可以为您保存订单