posts - 176, comments - 240, trackbacks - 0, articles - 7

          [導入]TreeNode:長程關(guān)聯(lián)

          Posted on 2005-11-19 10:59 canonical 閱讀(352) 評論(0)  編輯  收藏 所屬分類: Witrix開發(fā)平臺

          java中最常用的數(shù)據(jù)結(jié)構(gòu)類型是Map和List, 它們也是Container的兩種基本模式,一個是根據(jù)特征值定位,一個是根據(jù)地址定位。 它們共同的一個特征是表達了數(shù)據(jù)之間的直接的,短程的一種相關(guān)性。另一種常見的數(shù)據(jù)結(jié)構(gòu)Tree則表達了數(shù)據(jù)之間的一種長程的關(guān)聯(lián):根節(jié)點與其所有層次上 的子節(jié)點之間都存在著關(guān)聯(lián)。 文件系統(tǒng),組織機構(gòu), XML文檔等都可以對應(yīng)為Tree數(shù)據(jù)結(jié)構(gòu)。在描述樹形結(jié)構(gòu)的時候,我們經(jīng)常使用XML文件, 但是XML文件在程序中操縱起來并不方便,這其中的一個重要原因是XML是面向文檔的,即操縱XML的API返回的和使用的都只能是文本字符串,而不能直 接使用程序中常見的其他數(shù)據(jù)結(jié)構(gòu)。在witrix平臺中操縱Tree結(jié)構(gòu)的標準接口是TreeNode類,它的設(shè)計是面向應(yīng)用的,即節(jié)點的屬性值為 Object類型而不是String類型。

          Tree由三部分組成: 屬性,值, 子節(jié)點

          class TreeNode implements IVariant{
           List getChildren();

           int getChildCount();
           TreeNode child(int index);

           /** 當name對應(yīng)的節(jié)點不存在時將會自動創(chuàng)建該節(jié)點 */
           TreeNode child(String name);

              /** 當name對應(yīng)的節(jié)點不存在時返回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接口的一個實現(xiàn),例如
          int i = ode.intValue();

          通過使用IVariant接口,我們實現(xiàn)了強類型的java語言與弱類型的xml文本之間的自然轉(zhuǎn)換,在轉(zhuǎn)換過程中還可以指定缺省值,這些都極大的簡化了實際應(yīng)用時的編碼量。
          主站蜘蛛池模板: 乌兰浩特市| 桂东县| 高邑县| 景德镇市| 临沧市| 麻阳| 新营市| 剑河县| 克拉玛依市| 教育| 北票市| 偏关县| 青冈县| 泊头市| 阳信县| 新宁县| 尉氏县| 土默特右旗| 三穗县| 大名县| 博兴县| 柯坪县| 东阳市| 定结县| 壶关县| 阳新县| 江川县| 吉水县| 岚皋县| 搜索| 马尔康县| 含山县| 徐州市| 大英县| 白朗县| 古丈县| 清丰县| 岳阳市| 平潭县| 宁蒗| 驻马店市|