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

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

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

    Java技術樂園

    Java樂園
    posts - 2, comments - 1, trackbacks - 0, articles - 0

    2011年8月10日

     

         開始學HashTable,HashMap和TreeMap的時候比較暈,覺得作用差不多,但是到實際運用的時候又發(fā)現(xiàn)有許多差別的。需要大家注意,在實際開發(fā)中以需求而定。

             java為數(shù)據(jù)結構中的映射定義了一個接口java.util.Map,而HashMap Hashtable和TreeMap就是它的實現(xiàn)類。Map是將鍵映射到值的對象,一個映射不能包含重復的鍵;每個鍵最多只能映射一個一個值。

              Hashmap 是一個最常用的Map,它根據(jù)鍵的HashCode 值存儲數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為Null;允許多條記錄的值為Null;HashMap不支持線程的同步,即任一時刻可以有多個線程同時寫HashMap;可能會導致數(shù)據(jù)的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力.

              Hashtable 與 HashMap類似,但是主要有6點不同。

             1.HashTable的方法是同步的,HashMap未經(jīng)同步,所以在多線程場合要手動同步HashMap這個區(qū)別就像Vector和ArrayList一樣。   

            2.HashTable不允許null值,key和value都不可以,HashMap允許null值,key和value都可以。HashMap允許key值只能由一個null值,因為hashmap如果key值相同,新的key, value將替代舊的。   

            3.HashTable有一個contains(Object value)功能和containsValue(Object value)功能一樣。   

            4.HashTable使用Enumeration,HashMap使用Iterator。   

            5.HashTable中hash數(shù)組默認大小是11,增加的方式是 old*2+1。HashMap中hash數(shù)組的默認大小是16,而且一定是2的指數(shù)。   

            6.哈希值的使用不同,HashTable直接使用對象的hashCode。

            TreeMap能夠把它保存的記錄根據(jù)鍵排序,默認是按升序排序,也可以指定排序的比較器,當用Iterator 遍歷TreeMap時,得到的記錄是排過序的。

            下面是HashTable,HashMap和TreeMap總結的一個經(jīng)典例子。

    package com.taobao.luxiaoting;

    import java.util.Map;   

    import java.util.HashMap;   

    import java.util.Set;   

    import java.util.HashSet;   

    import java.util.Iterator;   

    import java.util.Hashtable;   

    import java.util.TreeMap;   

    class  HashMaps   

    {   

           public static void main(String[] args)    

          {   

                Map map=new HashMap();               

                map.put(“a”, “aaa”);   

                map.put(“b”, “bbb”);   

                map.put(“c”, “ccc”);   

                map.put(“d”, “ddd”);   

                  

                Iterator iterator = map.keySet().iterator();               

                while (iterator.hasNext()) {   

                 Object key = iterator.next();   

                 System.out.println(“map.get(key) is :”+map.get(key));   

                }         

                                   

                Hashtable tab=new Hashtable();               

                tab.put(“a”, “aaa”);   

                tab.put(“b”, “bbb”);   

                tab.put(“c”, “ccc”);   

                tab.put(“d”, “ddd”);   

                Iterator iterator_1 = tab.keySet().iterator();   

                while (iterator_1.hasNext()) {   

                 Object key = iterator_1.next();   

                 System.out.println(“tab.get(key) is :”+tab.get(key));   

                }            

                   

                TreeMap tmp=new TreeMap();               

                tmp.put(“a”, “aaa”);   

                tmp.put(“b”, “bbb”);   

                tmp.put(“c”, “ccc”);   

                tmp.put(“d”, “ddd”);   

                Iterator iterator_2 = tmp.keySet().iterator();   

                while (iterator_2.hasNext()) {   

                 Object key = iterator_2.next();   

                 System.out.println(“tmp.get(key) is :”+tmp.get(key));   

                }            

            }   

        }   

    輸出結果如下圖所示

    posted @ 2011-08-10 15:58 Angel's Kiss 閱讀(6010) | 評論 (1)編輯 收藏

     Return語句用法

    作用:

    (1)       返回方法指定類型的數(shù)據(jù)。(2)結束方法執(zhí)行。

    說明:在有返回值類型的方法只能夠可以使用多個return語句,但一次調(diào)時只能執(zhí)行一條return語句。其余無效。推薦只使用一個return語句,并聲明一個變量,然后做一些賦予這個變量正確意義的操作。然后在方法的最后一行,把這個變量返回調(diào)用程序。好處:易于維護。

    public class TestReturn {

        public void sum(){

           for(int i=0;;i++){

               if(i==4){

                  return;

               }

               System.out.println("i="+i);

           }

        }

        public String yilp(){

        return "heelo";

        }

       

        public static void main(String[] args) {

           TestReturn tr=new TestReturn();

           tr.sum();

           System.out.println(tr.yilp());

     

        }

     

    }

    輸出結果;

    i=0

    i=1

    i=2

    i=3

    heelo

    posted @ 2011-08-10 10:50 Angel's Kiss 閱讀(245) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 浮力影院第一页小视频国产在线观看免费 | 亚洲一区二区三区写真| 1000部啪啪毛片免费看| 久久精品国产亚洲AV无码麻豆| 免费av片在线观看网站| 亚洲AV日韩精品久久久久| 久久免费观看国产精品| 4444亚洲国产成人精品| 又粗又大又黑又长的免费视频| 亚洲av乱码一区二区三区香蕉| 毛片免费视频观看| 亚洲国产综合AV在线观看| 免费欧洲美女牲交视频| h视频免费高清在线观看| 亚洲乱码中文字幕综合| 国产精成人品日日拍夜夜免费| 亚洲春黄在线观看| 日本黄色免费观看| 黄视频在线观看免费| 亚洲精品无码aⅴ中文字幕蜜桃| 嫩草视频在线免费观看| 人人爽人人爽人人片av免费 | 久久亚洲中文字幕精品有坂深雪| 18女人腿打开无遮掩免费| 亚洲欧美综合精品成人导航| 亚洲国产一级在线观看| 免费人成在线观看网站| 精品久久久久久亚洲精品| 亚洲AⅤ无码一区二区三区在线| 国产羞羞的视频在线观看免费| 亚洲成人福利网站| 亚洲国产成人影院播放| 亚洲www77777| 国产亚洲av片在线观看18女人| 久久精品亚洲日本波多野结衣| 亚洲中文字幕无码永久在线| 五月天婷婷精品免费视频| 久久久久亚洲精品影视| 狼友av永久网站免费观看| 国产在线国偷精品免费看| 久久久久亚洲国产|