`
canonical
  • 浏览: 368085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[导入]TreeNode:长程关联

阅读更多

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文本之间的自然转换,在转换过程中还可以指定缺省值,这些都极大的简化了实际应用时的编码量。
分享到:
评论

相关推荐

    leetcodetreenode-TreeNode:二叉树leetcode挑战

    在这个“leetcodetreenode-TreeNode”项目中,我们关注的是与二叉树相关的LeetCode挑战。二叉树是一种基本的数据结构,它的每个节点最多有两个子节点,通常分为左子节点和右子节点。 二叉树在计算机科学中有着广泛...

    Graphic_TreeNode_operations

    For educational purpose.Graphic TreeNode:Operations:-MakeTree-DeleteTree-InsertNode-DeleteNode-SearchNode

    django-treenode:可能是基于树的东西的最佳抽象模型管理员

    django-treenode 可能是基于树的东西的最佳抽象模型/管理员。 产品特点 快速ancestors , children , descendants , parent , root , siblings ,无查询tree 同步-内存中的模型实例会自动更新 兼容性-您可以...

    Graphic_TreeNode_operations_correction

    For educational purpose.Graphic TreeNode:Operations:-MakeTree-DeleteTree-InsertNode-DeleteNode-SearchNode

    扩展WPF的TreeView,完成数据绑定和拖拽功能

    扩展WPF的TreeView,完成数据绑定和拖拽功能。 WPF看了很长时间了,但一直没怎么动手实践,正好任务需要,扩展了WPF的标准TreeView控件,并作为基础控件,支持下面的功能: 数据绑定 拖拽

    C#TreeNode控件的使用

    ### C# TreeNode 控件使用详解 #### 一、概述 在C#的Windows Forms或Web Forms应用程序开发过程中,经常会遇到需要展示层次结构数据的情况。这时,`TreeNode`控件便显得尤为重要。`TreeNode`控件是`TreeView`控件...

    Treenode显示或者隐藏图片

    当创建或添加`TreeNode`时,可以通过设置`TreeNode`的`ImageIndex`和`SelectedImageIndex`属性来关联图片。这两个属性分别表示节点默认状态和选中状态时显示的图片索引。 ```csharp TreeNode node = new TreeNode...

    TreeNode多级目录显示

    TreeNode ,左侧面板显示三级目录, int sublen = taskht.Keys.Count;//三级目录长度 int len = webht.Keys.Count; //二级目录长度 System.Windows.Forms.TreeNode treeRootNode = new System.Windows.Forms....

    TreeView Treenode 操作实例

    在这个“TreeView Treenode 操作实例”中,我们将深入探讨如何操作`TreeNode`,包括从数据库读取数据、构建类别树、将树结构写回数据库以及处理节点重命名以避免重复。 首先,让我们了解`TreeView`的基本操作。`...

    1 文件系统的Watcher.zip_mfc listview_资源管理器

    在MFC环境下① 与ListView控件相关的类:ColumnHeaderCollection,ListViewItem,ListView控件的成员:ColumnHeaderCollection,Items...主要成员:Item1,Item TreeNode:TreeView 的节点类型。clsTree:树类型的设计

    用richFaces的<rich:treeNode>标签开发tree

    本文将深入探讨如何使用RichFaces的`&lt;rich:treeNode&gt;`标签来开发动态树形结构视图。这个标签是RichFaces框架中的一个重要组成部分,常用于构建层次化的数据展示。 首先,让我们理解`&lt;rich:treeNode&gt;`的基本概念。它...

    二叉树的基本操作实现,如何创建?

    class TreeNode: def __init__(self, value): self.value = value self.left = None self.right = None 然后,你可以使用这个节点类来构建二叉树。构建二叉树通常有两种方式:手动创建或使用递归函数。 ...

    delphiTree_delphi源码_

    TreeNode: TTreeNode; begin // 创建根节点 TreeNode := TreeView1.Items.Add(nil, 'Root'); // 添加子节点 TreeNode := TreeNode.AddChild(nil, 'Child 1'); TreeNode := TreeNode.AddChild(nil, 'Child 2'...

    treenode enhancement

    TreeNode是树结构中的基本元素,代表树中的一个节点,它包含了自身的数据以及指向子节点的引用。在这个"treenode enhancement"项目中,开发者对网络上找到的源码进行了改进,以满足特定的需求,比如获取子节点和找出...

    ILSpy_binaries_ILSpy 6.1.zip

    Base types treenode: Create a flat list of nodes containing all base types instead of just the direct base types Bug fixes Fix #2050: Ref local variable is inlined incorrectly, changing the exception ...

    VSFLEXGRID的TreeNode效果

    而TreeNode是Windows Forms中的控件,主要用于构建TreeView控件的层次结构。在本主题中,我们将深入探讨如何在VB中结合VSFlexGrid和TreeNode来实现一种特定的效果。 首先,让我们了解这两个关键组件的基本概念: 1...

    leetcode答案-leetcode-tools:leetcode-工具

    Slice2TreeNode: []interface{} -&gt; *model.TreeNode TreeNode2Slice: *model.TreeNode -&gt; []interface{} 工具包 lckit 是一个帮助创建 leetcode 代码模板的工具 安装 go get github.com/zhai3516/leetcode-tools go ...

    使用C语言实现二叉树的树打印的实现方式.docx

    以下是一个简单的Python代码示例:pythonCopy codeclass TreeNode: def __init__(self, value): self.value = value self.left = None self.right = None def print_tree(root, depth=0, prefix="Root: "): if root ...

    使用C语言实现二叉树的树打印.docx

    以下是一个简单的Python代码示例:pythonCopy codeclass TreeNode: def __init__(self, value): self.value = value self.left = None self.right = Nonedef print_tree(root, depth=0, prefix="Root: "): if root ...

    python-按层次遍历二叉树.docx

    class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right ``` 然后,我们使用队列来实现层次遍历: ```python from collections import ...

Global site tag (gtag.js) - Google Analytics