<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    開發JTree時關于HashSet的一點啟發

    大家都知道Set的實現類HashSet中只能存放不重復的元素,但是它也是可以添加重復元素的,只不過是相同的元素被覆蓋了而已,如下面的代碼:

    Set<String> set=new HashSet<String>();
      set.add("a");
      set.add("b");
      set.add("c");
      set.add("a");
      set.add("b");
        for (String s : set)
      {
       System.out.println(s);
      }

    輸出為:
                    b
                    c
                    a

    于是我天真的寫下了下面的代碼
    Set<DefaultMutableTreeNode> nodes=new HashSet<DefaultMutableTreeNode>();
      DefaultMutableTreeNode node1=new DefaultMutableTreeNode("a");
      DefaultMutableTreeNode node2=new DefaultMutableTreeNode("b");
      DefaultMutableTreeNode node3=new DefaultMutableTreeNode("b");
      DefaultMutableTreeNode node4=new DefaultMutableTreeNode("a");
      nodes.add(node1);
      nodes.add(node2);
      nodes.add(node3);
      nodes.add(node4);
      for (DefaultMutableTreeNode node : nodes)
      {
       System.out.println(node.getUserObject());
      }
    可是輸出卻和我想的大相徑庭。(我認為只輸出 a b)
    輸出:
                b
                a
                b
                a

    于是我深入研究了一下HashSet中的add方法的源代碼,恍然大悟。將以上程序更改如下:

    Set<MyTreeNode > nodes=new HashSet<MyTreeNode>();
      MyTreeNode node1=new MyTreeNode("a"); 
      MyTreeNode node2=new MyTreeNode("b"); 
      MyTreeNode node3=new MyTreeNode("b"); 
      MyTreeNode node4=new MyTreeNode("a");
      nodes.add(node1);
      nodes.add(node2);
      nodes.add(node3);
      nodes.add(node4);
      for (DefaultMutableTreeNode node : nodes)
      {
       System.out.println(node.getUserObject());
      }

    其中MyTreeNode 是我自定義的類。

    class MyTreeNode extends DefaultMutableTreeNode
    {
     MyTreeNode(Object obj)
     {
      super(obj);
     }

     @Override
     public int hashCode()
     {
      // TODO Auto-generated method stub
      return this.getUserObject().hashCode();
     }
     @Override
     public boolean equals(Object obj)
     {
      // TODO Auto-generated method stub
      MyTreeNode treeNode=(MyTreeNode)obj;
      return this.getUserObject().equals(treeNode.getUserObject());
     }
     
    }

    經過我的修改,終于實現了HashSet應該發揮的功能,呵呵。



    posted on 2007-03-03 11:16 我為J狂 閱讀(1570) 評論(1)  編輯  收藏 所屬分類: 圖形用戶界面

    評論

    # re: 開發JTree時關于HashSet的一點啟發[未登錄] 2007-03-03 12:16 ronghai

    哈哈,這個在java解惑上提示  回復  更多評論   

    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(11)

    隨筆分類(48)

    文章分類(29)

    常去逛逛

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 99亚洲男女激情在线观看| 免费观看在线禁片| 亚洲成AV人片在线观看WWW| 蜜臀98精品国产免费观看| 亚洲日本va一区二区三区| 久久久亚洲精品蜜桃臀| 久久99九九国产免费看小说| 免费看一级高潮毛片| 亚洲精品电影在线| 免费A级毛片在线播放不收费| 国产精品视频白浆免费视频| 一本色道久久综合亚洲精品蜜桃冫| 国产日产亚洲系列最新| 免费无码精品黄AV电影| 中出五十路免费视频| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲精品高清无码视频| 永久免费AV无码网站在线观看| 久久精品免费视频观看| 香蕉97碰碰视频免费| 久久精品国产亚洲AV久| 国产亚洲综合色就色| 国产精品嫩草影院免费| 亚洲精品视频在线免费| 中文字幕乱理片免费完整的| 亚洲精品无码久久久久秋霞| 久久亚洲精品成人AV| 亚洲人成网站在线观看青青| 嫩草影院在线免费观看| 最近中文字幕完整免费视频ww | 日本红怡院亚洲红怡院最新| 国产男女猛烈无遮挡免费视频 | 97在线线免费观看视频在线观看 | 成人免费ā片在线观看| 相泽南亚洲一区二区在线播放| 91亚洲精品麻豆| 亚洲av激情无码专区在线播放| 国产午夜亚洲精品理论片不卡| 国产99视频精品免费视频7| 国产美女在线精品免费观看| 久视频精品免费观看99|