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

          java map的操作 與 遍歷效率

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

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

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

          4.遍歷一個(gè)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() ; 
          }

          遍歷效率對(duì)比:
          第一種:

            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來進(jìn)行遍歷,但兩者的遍歷速度是有差別的,下面請(qǐng)看實(shí)例:

            
          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() 返回與此項(xiàng)對(duì)應(yīng)的鍵

            
          // entry.getValue() 返回與此項(xiàng)對(duì)應(yīng)的值

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

            }


            System.out.println();

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

            }


            }


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

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

          評(píng)論

          # ·1  回復(fù)  更多評(píng)論   

          2015-09-09 15:55 by ·1
          ABC的風(fēng)格

          # re: java map的操作 與 遍歷效率  回復(fù)  更多評(píng)論   

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

          # re: java map的操作 與 遍歷效率  回復(fù)  更多評(píng)論   

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 阿拉善右旗| 开远市| 玉山县| 沁阳市| 多伦县| 时尚| 句容市| 汶川县| 安多县| 禹城市| 孝昌县| 长宁县| 贵州省| 麻江县| 哈巴河县| 青铜峡市| 林芝县| 札达县| 会理县| 博白县| 衡阳市| 盱眙县| 明水县| 内乡县| 宁都县| 肇源县| 宁城县| 旅游| 桂林市| 怀仁县| 桐梓县| 锡林郭勒盟| 阿克| 文化| 岳阳县| 青河县| 库伦旗| 莒南县| 江口县| 永靖县| 太仆寺旗|