1
一个treestructure鉴于像字符串列表:建设有BSON和Java
A
A.1
A.1.B
A.1.B.X
A.1.B.X
A.1.B.X
A.1.B.X
A.1.C
A.1.C.Y
A.1.C.Y
A.1.C.Y
我如何才能让一棵树stucture与字符串作为母密钥的第一部分? 我有一个约束,它需要在BSON中,因为它必须进入MongoDB,我不允许使用额外的自定义对象,并且我还有一些额外的数据要保存。 的BSON文件必须看起来像:
{id:A, parentId:null, children:[{id:A.1,parentId:A, children:[{id:A.1.B, parentId:A.1, children[...]}, ...]},...]}
编辑: 答: 为了解决这个问题,我把给BIJ Zavior构建我的基本要素答案。
Map<String, Map<String, Object>> map = new HashMap<>()
之后,我拿出了我的地图清单,并通过它们解析。我查看了一个条目是否有parentId,如果是的话,我将它添加到了该父条目的子项列表中。我用Map来存储id和元素。
map.entrySet().stream().forEach(entry -> {
Map<String, Object> treeObject = entry.getValue();
String parentId = (String)treeObject.get("parent");
if (StringUtils.isNotBlank(parentId)) {
Map<String, Object> parent = map.get(parentId);
((List<Map<String, Object>>)parent.get("children")).add(treeObject);
}
});
当我构建树时,我找到了父母。
List<Map<String, Object>> result = map.values().stream().filter(entry -> StringUtils.isBlank((String) entry.get("parent"))).collect(Collectors.toList());
而我将如何得到一个这样的树结构?或者BasicDBObject为我做这件事吗? – bobK
@bobK基本上你只是嵌套集合。看到我的最新编辑 – Zavior
这就是我陷入困境,计算正确的水平儿童。哈希映射虽然是一个很好的提示:) – bobK