3 回答
TA贡献1848条经验 获得超2个赞
如果嵌套数据的结构是不变的,您可以使用带有属性的普通类。
如果结构是动态的,我会使用Maps,接口并忽略实现。
关于使用自定义树结构,如果可以使用类,那就更好了。如果您使用Maps,我会从 a 开始,HashMap如果您发现这是一个问题,您可以Map稍后将其替换为其他内容。
TA贡献1993条经验 获得超5个赞
您可以为此用例实现 Trie。迭代复合键并返回数据(如果找到)。
类定义:
public class TrieNode {
private HashMap<String, TrieNode> children;
private Data data;
private boolean isLeaf;
// ...
}
查找查询将如下所示:
public Data find(List<String> compositeKey) {
TrieNode current = root;
for (String key: compositeKey) {
TrieNode node = current.getChildren().get(key);
if (node == null) {
return null;
}
current = node;
}
if(current.isLeaf()) {
return current.getData();
} else {
return null;
}
}
插入将如下所示:
public void insert(List<String> compositeKey, Data data) {
TrieNode current = root;
for (String key: compositeKey) {
current = current.getChildren()
.computeIfAbsent(key, c -> new TrieNode());
}
current.setLeaf(true);
current.setData(data);
}
TA贡献1803条经验 获得超6个赞
显然你必须使用类似树的数据结构。这是它的示例代码。
高级代码思想
class Entity{
// declare you attributes and below two properties
List<Entity> children;
boolean isleafNode;// for parent node its 'false' and for leaf node it will 'true'
}
添加回答
举报