久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Java:Map遍歷

Java:Map遍歷(li) 時間:2019-02-13      來源:華清遠見

1、Map

Map是Java中(zhong)一種(zhong)十(shi)分(fen)常(chang)(chang)用的(de)(de)(de)集合(he)類型(xing)(接口),主要實現類有HashMap、TreeMap等。Map通常(chang)(chang)用于(yu)存(cun)儲“鍵-值(key-value)”類型(xing)的(de)(de)(de)數(shu)據(ju)結構,比如我們(men)手(shou)機中(zhong)的(de)(de)(de)通訊錄(lu)“張三-13066668888”;或者股票代碼與股票名(ming)稱(cheng)“000858-五糧液”。 所以(yi)我們(men)可以(yi)形象(xiang)的(de)(de)(de)理解為Map中(zhong)保(bao)存(cun)了兩組(zu)數(shu)據(ju),一組(zu)是key,另一組(zu)是value。key非常(chang)(chang)類似于(yu)Set,它是不(bu)能重復的(de)(de)(de),也不(bu)確保(bao)按順(shun)序排列。value非常(chang)(chang)類似List,它可以(yi)有重復的(de)(de)(de)值,可以(yi)通過key來(lai)獲取對(dui)應的(de)(de)(de)value。

2、Map基本使(shi)用(yong)

Map提供put和get方法來存取數據,下面(mian)例(li)子以(yi)HashMap為例(li)演示Map基本的存取數據的方式:

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

         public static void main(String[] args) {

       ;         //初始(shi)化map對象

          &nbsp;     Map<;Integer, String> map = new HashMap<>();

                //往(wang)map對象(xiang)添加(jia)月(yue)份序(xu)號和(he)英文縮寫的鍵值對數據(ju)

             ;   map.put(1, "Jan");

         ;       map.put(2, "Feb");

              &nbsp; map.put(3, "Mar");

         ;       map.put(4, "Apr");

                map.put(5, "May");

                //控(kong)制臺輸出整個map對象

                System.out.println("map對象所有數據(ju): " + map);

                //控制(zhi)臺(tai)輸出第(di)三月(yue)的英(ying)文縮寫

                System.out.println("第3月是: " + map.get(3));

        }

}

上例輸出結果如下(xia):

map對象所(suo)有數據: {1=Jan, 2=Feb, 3=Mar, 4=Apr, 5=May}

第3月(yue)是: Mar

 由于(yu)Map是接口,所(suo)以(yi)初始化用了(le)它的實現類HashMap,給map對象賦值使(shi)用put方(fang)法(fa),第(di)一個參數(shu)是key,第(di)二(er)個參數(shu)是value。這(zhe)里要注意(yi):HashMap是可以(yi)用null作(zuo)為key的。

當直接輸出(chu)map對象時,從結果(guo)可(ke)以看出(chu),它重寫了(le)toString方法,把(ba)map中的(de)所有數據按key=value的(de)格式返回,每對鍵(jian)值對之間用(yong)逗(dou)號分隔。

當要獲取指定key的value時,使用get方(fang)法,參數為key。

3、Map遍歷(li)

上面例子中是在已(yi)知key的情(qing)況下,才能獲(huo)取(qu)其(qi)對應的value,如果(guo)不知道Map里有哪些(xie)key的情(qing)況下怎(zen)么辦呢?這時候就需要用到Map的遍(bian)歷(li)(li),Map也跟Array或(huo)List一(yi)樣具有遍(bian)歷(li)(li)的方法,通過遍(bian)歷(li)(li)能獲(huo)得每(mei)一(yi)個key、value或(huo)者key-value鍵值對。遍(bian)歷(li)(li)Map有如下幾種方式:

3.1、只遍歷key

當只需(xu)要(yao)獲取key列(lie)表,而不(bu)關心value時(shi)用此方式(shi)。推薦使用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

      &nbsp;         //初始(shi)化map對象(xiang)

                Map<Integer, String> map = new HashMap<>();

                //往(wang)map對象添加(jia)月(yue)份序(xu)號和(he)英文(wen)縮寫(xie)的鍵(jian)值(zhi)對數據

                map.put(1, &quot;Jan");

               &nbsp; map.put(2, "Feb");

  &nbsp;             map.put(3, "Mar");

                map.put(4, &quot;Apr");

&nbsp;               map.put(5, "May");

 ;     &nbsp;         //遍歷所有的key

        &nbsp;       for(Integer k : map.keySet()) {

                      &nbsp; System.out.println(k);

                }

        }

}

輸出(chu)結果如下(xia):

1

2

3

4

5

3.2、只遍(bian)歷value

當(dang)只需要獲取(qu)value列表,而不關心(xin)key時(shi)用此方(fang)式(shi)。推薦使用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

  &nbsp;             //初始化(hua)map對象

        &nbsp;       Map<Integer, String&gt; map = new HashMap<>();

    &nbsp;           //往map對象添加(jia)月份序(xu)號和英(ying)文縮(suo)寫的(de)鍵(jian)值對數據(ju)

    &nbsp;           map.put(1, "Jan");

            &nbsp;   map.put(2, "Feb");

              &nbsp; map.put(3, "Mar");

&nbsp;         &nbsp;     map.put(4, "Apr");

                map.put(5, &quot;May");

                //遍歷所有的value

                for(String v : map.values()) {

    &nbsp;                   System.out.println(v);

          &nbsp;   &nbsp; }

        }

}

輸出結果(guo)如下:

Jan

Feb

Mar

Apr

May

3.3 遍歷Entry對象(xiang)

當既需(xu)要(yao)key,也需(xu)要(yao)value時(shi),使用此方式。推薦使用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

       ; public static void main(String[] args) {

                //初始化map對(dui)象(xiang)

                Map<Integer, String> map = new HashMap<>();

          &nbsp;     //往map對象添加月份序號和英文縮寫的鍵(jian)值對數據

                map.put(1, "Jan");

        &nbsp;       map.put(2, "Feb");

&nbsp;               map.put(3, "Mar";);

       ;   &nbsp;     map.put(4, "Apr");

                map.put(5, "May");

            &nbsp;   //遍歷所(suo)有的(de)Entry(key和value)

  &nbsp;             for(Map.Entry<Integer, String> entry : map.entrySet()) {

                        System.out.println(entry.getKey() + ": " + entry.getValue());

          &nbsp;     }

        }

}

輸出結果如下(xia):

1: Jan

2: Feb

3: Mar

4: Apr

5: May

3.4 使用forEach方法(fa)加Lambda遍歷

這種方式(shi)也可同時(shi)遍歷key和value,但是使(shi)用到(dao)了Lambda表達式(shi),需(xu)要JDK1.8以上(shang)版本。推薦使(shi)用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

&nbsp;       public static void main(String[] args) {

        &nbsp;       //初始(shi)化map對象(xiang)

                Map<Integer, String&gt; map = new HashMap<>();

                //往(wang)map對(dui)象添(tian)加月份序號和英文縮寫的鍵(jian)值對(dui)數據

          &nbsp;   &nbsp; map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, &quot;Apr&quot;);

                map.put(5, ";May");

                //使(shi)用forEach方法加Lambda遍歷

                map.forEach((k, v)->System.out.println(k + ": "; + v));

        }

}

輸出(chu)結果如下:

1: Jan

2: Feb

3: Mar

4: Apr

5: May

3.5 使用Iterator遍歷

雖然這種方式也能得到(dao)正確結果(guo),但是過(guo)于復雜,有(you)多(duo)此一舉之嫌。不推薦使用(yong)!

package com.hqyj;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

   ;             //初始化map對象

                Map<Integer, String> map = new HashMap<&gt;();

                //往map對象添加月份序(xu)號(hao)和英文縮(suo)寫的鍵值(zhi)對數據

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar&quot;);

                map.put(4, "Apr");

                map.put(5, "May");

  &nbsp;             //使用(yong)Iterator遍(bian)歷

      &nbsp;         Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();

       ;         while(iterator.hasNext()) {

    &nbsp;                   Map.Entry<Integer, String> entry = iterator.next();

                  &nbsp;     System.out.println(entry.getKey() + ": "; + entry.getValue());

     ;           }

        }

}

輸出結果如(ru)下:

1: Jan

2: Feb

3: Mar

4: Apr

5: May

3.6 通過(guo)key遍歷value

這種方式(shi)(shi)顯得不倫不類(lei),如果(guo)已知key要獲取(qu)單個value,直(zhi)接(jie)用(yong)get方法(fa);如果(guo)要獲取(qu)所有的(de)value,請(qing)用(yong)values方式(shi)(shi)遍歷。不推薦使(shi)用(yong)!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

     ; &nbsp; public static void main(String[] args) {

  &nbsp;             //初始化(hua)map對(dui)象

                Map<Integer, String> map = new HashMap<>();

 ;               //往map對(dui)象添加月份序號和英文縮寫的鍵值對(dui)數據

              &nbsp; map.put(1, "Jan");

          &nbsp; &nbsp;   map.put(2, "Feb");

            &nbsp;  ; map.put(3, "Mar");

    &nbsp;       &nbsp;   map.put(4, "Apr");

      &nbsp;         map.put(5, "May");

&nbsp;               //通過key遍歷value

   ;             for(Integer i : map.keySet()) {

    &nbsp;                   System.out.println(map.get(i));

               &nbsp; }

        }

}

輸出(chu)結果如下:

Jan

Feb

Mar

Apr

May

上一篇:C語言:數據指針

下一篇:ARM工程師是干啥的?

熱點文章推薦
華清(qing)學員就業榜(bang)單
高薪學(xue)員經(jing)驗分享
熱(re)點(dian)新(xin)聞推(tui)薦
前臺專線:010-82525158 企(qi)業(ye)培訓(xun)洽談專(zhuan)線(xian):010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部