java中最常用的数据结构类型是Map和List, 它们也是Container的两种基本模式,一个是根据特征值定位,一个是根据地址定位。 它们共同的一个特征是表达了数据之间的直接的,短程的一种相关性。另一种常见的数据结构Tree则表达了数据之间的一种长程的关联:根节点与其所有层次上 的子节点之间都存在着关联。 文件系统,组织机构, XML文档等都可以对应为Tree数据结构。在描述树形结构的时候,我们经常使用XML文件, 但是XML文件在程序中操纵起来并不方便,这其中的一个重要原因是XML是面向文档的,即操纵XML的API返回的和使用的都只能是文本字符串,而不能直 接使用程序中常见的其他数据结构。在witrix平台中操纵Tree结构的标准接口是TreeNode类,它的设计是面向应用的,即节点的属性值为 Object类型而不是String类型。
Tree由三部分组成: 属性,值, 子节点
class TreeNode implements IVariant{
List getChildren();
int getChildCount();
TreeNode child(int index);
/** 当name对应的节点不存在时将会自动创建该节点 */
TreeNode child(String name);
/** 当name对应的节点不存在时返回null */
TreeNode existingChild(String name);
Map getAttributes();
IVariant attribute(String name);
void setAttribute(String name, Object attrValue);
}
TreeNode.attribute(name)返回的是IVariant接口,例如
boolean defaultValue = true;
boolean b = node.child("subA").attribute("attrB").booleanValue(defaultValue);
TreeNode本身也是IVariant接口的一个实现,例如
int i = ode.intValue();