如何订购我在列表中的随机层次结构数据
How to order random hierarchy data which I have in list
实际上我正在处理数据分析类项目,我正在处理层次结构数据。
我在层次结构数据列表中有一个列表,如下所示
dataList = [[Id:1, Manager id:0, String:s], [Id:4, Manager id:0, String:p], [Id:7, Manager id:0, String:s],[Id:8, Manager id:1, String:s], [Id:2, Manager id:1, String:s],
[Id:3, Manager id:2, String:s],[Id:9, Manager id:8, String:s],[Id:5, Manager id:4, String:s]]
Id is id and Manager id is parent id //Manager id with 0 dont have any parent
所以,是否可以根据层次结构对数据列表进行排序。在我使用 dojoTreeTable 或 dojo 之前,它在处理 10k 条记录时花费了很多时间,因为需要添加额外的变量来排序层次结构。
请不要看太多我已经做了。但这是我现在正在实施的 expand all。
先按 "Manager id" 排序,再按 "Id" 排序。然后将它们缩减为从 "Manager Id" 到子列表的映射:
def p = "P"
def s = "S"
def dataList = [[Id:1, 'Manager id':0, String:s], [Id:4, 'Manager id':0, String:p], [Id:7, 'Manager id':0, String:s],[Id:8, 'Manager id':1, String:s], [Id:2, 'Manager id':1, String:s], [Id:3, 'Manager id':2, String:s],[Id:9, 'Manager id':8, String:s],[Id:5, 'Manager id':4, String:s]]
def sortByManagerIdAndId = { a,b ->
a."Manager id" <=> b."Manager id" ?: a.Id <=> b.Id
}
def hier = dataList.sort(sortByManagerIdAndId).inject([:].withDefault{[]}) { m,e ->
m[e."Manager id"] << e; m
}
assert hier.keySet() == dataList*."Manager id".toSet()
assert hier[0]*.Id == [1,4,7]
assert hier[4]*.Id == [5]
从那里构建您的 UI 模型(或直接在减少步骤中这样做)
实际上我正在处理数据分析类项目,我正在处理层次结构数据。
我在层次结构数据列表中有一个列表,如下所示
dataList = [[Id:1, Manager id:0, String:s], [Id:4, Manager id:0, String:p], [Id:7, Manager id:0, String:s],[Id:8, Manager id:1, String:s], [Id:2, Manager id:1, String:s],
[Id:3, Manager id:2, String:s],[Id:9, Manager id:8, String:s],[Id:5, Manager id:4, String:s]]
Id is id and Manager id is parent id
//Manager id with 0 dont have any parent
所以,是否可以根据层次结构对数据列表进行排序。在我使用 dojoTreeTable 或 dojo 之前,它在处理 10k 条记录时花费了很多时间,因为需要添加额外的变量来排序层次结构。
请不要看太多我已经做了。但这是我现在正在实施的 expand all。
先按 "Manager id" 排序,再按 "Id" 排序。然后将它们缩减为从 "Manager Id" 到子列表的映射:
def p = "P"
def s = "S"
def dataList = [[Id:1, 'Manager id':0, String:s], [Id:4, 'Manager id':0, String:p], [Id:7, 'Manager id':0, String:s],[Id:8, 'Manager id':1, String:s], [Id:2, 'Manager id':1, String:s], [Id:3, 'Manager id':2, String:s],[Id:9, 'Manager id':8, String:s],[Id:5, 'Manager id':4, String:s]]
def sortByManagerIdAndId = { a,b ->
a."Manager id" <=> b."Manager id" ?: a.Id <=> b.Id
}
def hier = dataList.sort(sortByManagerIdAndId).inject([:].withDefault{[]}) { m,e ->
m[e."Manager id"] << e; m
}
assert hier.keySet() == dataList*."Manager id".toSet()
assert hier[0]*.Id == [1,4,7]
assert hier[4]*.Id == [5]
从那里构建您的 UI 模型(或直接在减少步骤中这样做)