我想创建一个具有n
级别层次结构的用户树。我有一个POJO对象,其中我有id,parent_id
。
问题是用户可以属于多个组。所以,当我想要做的时候,
while (iterator.hasNext()) {
val user_pojo_obj = iterator.next()
val key = user_pojo_obj.id
val parent_key = user_pojo_obj.family_id
var child: Item = container.addItem(key)
child.getItemProperty("caption").asInstanceOf[Property[Any]].setValue(user_pojo_obj.name)
child.getItemProperty("POJOobj").asInstanceOf[Property[Any]].setValue(user_pojo_obj)
container.setParent(key, parent_key)
}
我在第二行得到NullPointerException,据我所知,因为容器中的addItem()
重复,返回null
。
如果不能改进,请建议我替代。 (使用Scala)
Thanxx ..
答案 0 :(得分:1)
据我所知,您不能拥有多个父母或重复itemId
。以下伪代码是构建树状结构的替代解决方案(node
是您的POJO):
counter = 0;
function process(nodes, parent) {
foreach (node in nodes) {
newId = counter++;
item = container.addItem(newId);
// set item caption etc.
if (parent not null)
container.setParent(newId, parent)
process(getNodesWithParent(node), newId);
}
}
process(getNodesWithParent(null), null);
方法getNodesWithParent
需要由您定义。我猜你会使用迭代器,遍历你的POJO并返回family_id
等于参数id
的那些。总体性能取决于getNodesWithParent
的实现,因此如果您拥有大型数据集,则应该关注效率。