gpt4 book ai didi

java - 如何在 Java 中处理多类型树系统?

转载 作者:行者123 更新时间:2023-12-01 15:28:41 25 4
gpt4 key购买 nike

RELOAD 系统 ( http://rpg.hamsterrepublic.com/ohrrpgce/RELOAD ) 在 OHRRPGCE GCS 中用作基于树的数据包含系统。该系统中的节点可以具有七种类型之一和任意数量的子节点。

目前,我正在为 Java 编写一个库来通过泛型处理 RELOAD,但对我来说这感觉像是一个拼凑。我做得对还是有更有效的方法?

以下是抽象 RELOAD 节点的代码:

 /**
*
*/
package hamsterwrench.data.reload;

import java.util.ArrayList;

/**
* @author Matt
*
*/
public abstract class ReloadNode<T>{
@SuppressWarnings("rawtypes")
private ArrayList<ReloadNode> children = new ArrayList<ReloadNode>();
private T data;
private long nodeID;
private String name;
protected ReloadNodeType type;

public ReloadNode(long id, String newName){
name = newName;
nodeID = id;
}

public T readData(){
return data;
}

public void writeData(T input){
data = input;
}

public String name(){
return name;
}

public ReloadNodeType type(){
return type;
}

@SuppressWarnings("rawtypes")
public void addChild(ReloadNode r){
children.add(r);
}

public int numberOfChildren(){
return children.size();
}

public boolean removeChild(@SuppressWarnings("rawtypes") ReloadNode r){
return children.remove(r);
}

@SuppressWarnings("rawtypes")
public ReloadNode getChild(int i){
return children.get(i);
}

public ArrayList<String> getChildrenNames(){
ArrayList<String> result = new ArrayList<String>();
for(int i = 0; i < children.size(); i++){
result.add(children.get(i).name());
}
return result;
}

public long ID(){
return nodeID;
}
}

最佳答案

我不确定您想在这里实现什么目标。

但是,看起来您正在重新实现基本的树结构。有效地实现结构是很困难的,您可能会错过一些微妙之处。

虽然这是一个很好的学术练习,但我不建议您为生产代码编写自己的结构。

您可能正在寻找的是红黑树。包中提供

java.util.TreeMap

http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html

如果您需要更复杂的树结构。 Google 创建了一个名为 Guava 的高效结构包(免费下载和使用)。

您可能想看看这里

com.google.common.collect.TreeBasedTable

http://docs.guava-libraries.googlecode.com/git-history/v11.0.2/javadoc/com/google/common/collect/TreeBasedTable.html

所有这些结构都已经是通用的。

关于java - 如何在 Java 中处理多类型树系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com