Posted on 2005-11-19 10:59
canonical 阅读(342)
评论(0) 编辑 收藏 所属分类:
Witrix开发平台
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();
通过使用IVariant接口,我们实现了强类型的java语言与弱类型的xml文本之间的自然转换,在转换过程中还可以指定缺省值,这些都极大的简化了实际应用时的编码量。