posts - 110, comments - 101, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          java map的操作 與 遍歷效率

          Posted on 2011-05-12 21:13 云云 閱讀(10261) 評論(3)  編輯  收藏
          1.聲明一個map: Map map = new HashMap(); 
          2.向map中放值,注意:map是key-value的形式存放的.如:

          map.put(”sa”,”dd”);

          3.從map中取值:String str = map.get(”sa”).toString();結果是:str = ”dd”;

          4.遍歷一個map,從中取得key 和value

          JDK1.
          5

          Map m 
          = new HashMap(); 
          for (Object o : map.keySet()) 
          map.get(o); 
          }


          JDK1.
          4

          Map map 
          = new HashMap() ; 

          Iterator it 
          = map.entrySet().iterator() ; 
          while (it.hasNext()) 

          Map.Entry entry 
          = (Map.Entry) it.next() ; 
          Object key 
          = entry.getKey() ; 
          Object value 
          = entry.getValue() ; 
          }

          遍歷效率對比:
          第一種:

            Map map 
          = new HashMap();

            Iterator iter 
          = map.entrySet().iterator();

            
          while (iter.hasNext()) {

            Map.Entry entry 
          = (Map.Entry) iter.next(); Object key = entry.getKey();

            Object val 
          = entry.getValue();

            }


            效率高,以后一定要使用此種方式
          !

            第二種:

            Map map 
          = new HashMap();

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

            
          while (iter.hasNext()) {

            Object key 
          = iter.next();

            Object val 
          = map.get(key);

            }


            效率低,以后盡量少使用
          !

            HashMap的遍歷有兩種常用的方法,那就是使用keyset及entryset來進行遍歷,但兩者的遍歷速度是有差別的,下面請看實例:

            
          public class HashMapTest {

            
          public static void main(String[] args) {

            HashMap hashmap 
          = new HashMap();

            
          for (int i = 0; i <1000; i ) {

            hashmap.put(
          "" i, "thanks");

            }


            
          long bs = Calendar.getInstance().getTimeInMillis();

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

            
          while (iterator.hasNext()) {

            System.out.print(hashmap.get(iterator.next()));

            }


            System.out.println();

            System.out.println(Calendar.getInstance().getTimeInMillis() 
          - bs);

            listHashMap();

            }


            
          public static void listHashMap() {

            java.util.HashMap hashmap 
          = new java.util.HashMap();

            
          for (int i = 0; i <1000; i ) {

            hashmap.put(
          "" i, "thanks");

            }


            
          long bs = Calendar.getInstance().getTimeInMillis();

            java.util.Iterator it 
          = hashmap.entrySet().iterator();

            
          while (it.hasNext()) {

            java.util.Map.Entry entry 
          = (java.util.Map.Entry) it.next();

            
          // entry.getKey() 返回與此項對應的鍵

            
          // entry.getValue() 返回與此項對應的值

            System.out.print(entry.getValue());

            }


            System.out.println();

            System.out.println(Calendar.getInstance().getTimeInMillis() 
          - bs);

            }


            }


            對于keySet其實是遍歷了2次,一次是轉為iterator,一次就從hashmap中取出key所對于的value。而entryset只是遍歷了第一次,他把key和value都放到了entry中,所以就快了。

            注:Hashtable的遍歷方法和以上的差不多
          !

          評論

          # ·1  回復  更多評論   

          2015-09-09 15:55 by ·1
          ABC的風格

          # re: java map的操作 與 遍歷效率  回復  更多評論   

          2015-09-09 15:56 by ·11
          213

          # re: java map的操作 與 遍歷效率  回復  更多評論   

          2015-09-09 15:56 by ·11
          @&#183;1

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 田林县| 淄博市| 通海县| 临高县| 鄯善县| 富阳市| 高邑县| 汉川市| 达州市| 阿尔山市| 榆林市| 民和| 桃园县| 滦平县| 图片| 孙吴县| 绵阳市| 禄丰县| 金阳县| 饶阳县| 三都| 崇仁县| 西青区| 综艺| 金阳县| 厦门市| 阳高县| 迁安市| 巴东县| 普兰店市| 四子王旗| 昆明市| 建瓯市| 泸定县| 承德市| 庆安县| 嘉善县| 鹿邑县| 云南省| 类乌齐县| 黔南|