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

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

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

    開發(fā)JTree時關(guān)于HashSet的一點啟發(fā)

    大家都知道Set的實現(xiàn)類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());
     }
     
    }

    經(jīng)過我的修改,終于實現(xiàn)了HashSet應該發(fā)揮的功能,呵呵。



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

    評論

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

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

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

    導航

    統(tǒng)計

    常用鏈接

    留言簿(11)

    隨筆分類(48)

    文章分類(29)

    常去逛逛

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久久久岛国免费播放| 男女作爱免费网站| 99re6在线精品视频免费播放 | 亚洲另类图片另类电影| 久久久久久免费一区二区三区| 国产成人亚洲精品91专区手机| 一出一进一爽一粗一大视频免费的| 国产成人亚洲综合| 在线观看免费无码专区| 亚洲va久久久噜噜噜久久男同| 久久午夜无码免费| 亚洲成a人片毛片在线| 免费观看成人毛片a片2008| 亚洲最大无码中文字幕| 精品无码国产污污污免费| 亚洲sm另类一区二区三区| 免费成人午夜视频| 国产免费久久精品99久久| 亚洲成人中文字幕| 日本免费网址大全在线观看 | 久久久久亚洲精品无码网址色欲| 国产精品视频免费一区二区三区 | 中文字幕在线免费| 亚洲xxxx视频| 亚洲国产精品成人久久蜜臀 | 免费观看毛片视频| 一级毛片在播放免费| 久久久久亚洲精品美女| 日本免费网址大全在线观看| 久久亚洲精品无码gv| 亚洲精品国偷自产在线| 免费女人高潮流视频在线观看| 亚洲入口无毒网址你懂的| 亚洲第一页日韩专区| 国产精品99精品久久免费| 亚洲精品免费网站| 久久精品国产亚洲精品| 国产一卡二卡四卡免费| 337p日本欧洲亚洲大胆人人| 久久久久国产亚洲AV麻豆| 日本最新免费网站|