<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)

    常去逛逛

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费看成人AA片无码视频吃奶| 色噜噜亚洲男人的天堂| 在线播放免费人成视频网站| 免费鲁丝片一级在线观看| 亚洲一区二区三区免费观看| 免费观看激色视频网站(性色)| 亚洲精品中文字幕麻豆| 亚洲毛片免费观看| 亚洲国产日韩在线成人蜜芽| 免费人成网站在线观看10分钟| 亚洲精品天堂在线观看| 免费高清在线影片一区| 色屁屁www影院免费观看视频| 亚洲伦乱亚洲h视频| 中文精品人人永久免费| 亚洲嫩草影院久久精品| 五月婷婷在线免费观看| 亚洲国产高清国产拍精品| 免费国产成人午夜私人影视| 黄色短视频免费看| 亚洲天天做日日做天天看 | 亚洲色婷婷综合久久| 花蝴蝶免费视频在线观看高清版| 亚洲成AV人在线观看天堂无码| 亚洲欧洲免费视频| 亚洲videosbestsex日本| 国产免费av片在线无码免费看| 国产精品免费久久| 亚洲精品**中文毛片| 日本黄页网站免费| 中国一级毛片免费看视频| 亚洲高清美女一区二区三区| 在线免费观看中文字幕| 久久久久久av无码免费看大片 | 亚洲精品123区在线观看| 亚洲Av无码乱码在线znlu| 中文字幕久精品免费视频| 亚洲AV无码国产精品色| 国产成人亚洲综合| 久久久高清免费视频| 四虎国产精品成人免费久久|