色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

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

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

1、Map

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

2、Map基本使用

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

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

                //初始化map對象

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

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

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, "Apr");

                map.put(5, "May");

                //控制臺輸出整個map對象

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

                //控制臺輸出第三月的英文縮寫

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

        }

}

上例輸出結果如下:

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

第3月是: Mar

由于Map是接口,所以初始化用了它的實現類HashMap,給map對象賦值使用put方法,第一個參數是key,第二個參數是value。這里要注意:HashMap是可以用null作為key的。

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

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

3、Map遍歷

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

3.1、只遍歷key

當只需要獲取key列表,而不關心value時用此方式。推薦使用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

                //初始化map對象

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

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

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, "Apr");

                map.put(5, "May");

                //遍歷所有的key

                for(Integer k : map.keySet()) {

                        System.out.println(k);

                }

        }

}

輸出結果如下:

1

2

3

4

5

3.2、只遍歷value

當只需要獲取value列表,而不關心key時用此方式。推薦使用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

                //初始化map對象

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

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

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, "Apr");

                map.put(5, "May");

                //遍歷所有的value

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

                        System.out.println(v);

                }

        }

}

輸出結果如下:

Jan

Feb

Mar

Apr

May

3.3 遍歷Entry對象

當既需要key,也需要value時,使用此方式。推薦使用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

                //初始化map對象

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

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

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, "Apr");

                map.put(5, "May");

                //遍歷所有的Entry(key和value)

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

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

                }

        }

}

輸出結果如下:

1: Jan

2: Feb

3: Mar

4: Apr

5: May

3.4 使用forEach方法加Lambda遍歷

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

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

                //初始化map對象

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

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

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, "Apr");

                map.put(5, "May");

                //使用forEach方法加Lambda遍歷

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

        }

}

輸出結果如下:

1: Jan

2: Feb

3: Mar

4: Apr

5: May

3.5 使用Iterator遍歷

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

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<>();

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

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, "Apr");

                map.put(5, "May");

                //使用Iterator遍歷

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

                while(iterator.hasNext()) {

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

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

                }

        }

}

輸出結果如下:

1: Jan

2: Feb

3: Mar

4: Apr

5: May

3.6 通過key遍歷value

這種方式顯得不倫不類,如果已知key要獲取單個value,直接用get方法;如果要獲取所有的value,請用values方式遍歷。不推薦使用!

package com.hqyj;

import java.util.HashMap;

import java.util.Map;

public class LoopMap {

        public static void main(String[] args) {

                //初始化map對象

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

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

                map.put(1, "Jan");

                map.put(2, "Feb");

                map.put(3, "Mar");

                map.put(4, "Apr");

                map.put(5, "May");

                //通過key遍歷value

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

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

                }

        }

}

輸出結果如下:

Jan

Feb

Mar

Apr

May

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

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

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 隔壁邻居是巨爆乳寡妇 | 无码中文字幕人妻在线一区 | 国产在线观看超清无码视频一区二区 | 国产精品福利在线观看无码卡一 | 中文字幕无码第1页 | 伊人狠狠色丁香婷婷综合 | 农村乱人伦一区二区 | 狠狠色噜噜狠狠狠狠色综合网 | 妺妺窝人体色777777野大粗 | 四虎影院在线观看av | 18禁夜色福利院在线播放 | 嫩草影院一区二区 | 亚洲乱亚洲乱妇无码 | 国产成人aa在线视频 | 奇米影视7777久久精品人人爽 | 久久精品亚洲中文字幕无码麻豆 | 国产精品自在拍在线播放 | 厨房人妻hd中文字幕 | 女人被狂躁的高潮免费视频 | a级毛片无码免费真人久久 手机a级毛片免费观看 | 男人女人双性人人妖太监 | 啦啦啦高清视频在线观看 | 日本一区二区三区在线观看视频 | 欧美尺寸又黑又粗又长 | AAA少妇高潮大片免费看 | 曰欧一片内射vα在线影院 91嫩草久久久精品影院 | 女人扒开屁股让男人桶 | 日本中文不卡视频 | 国模GOGO无码人体啪啪 | 无翼乌18禁全肉肉无遮挡彩色 | 亚洲另类精品国产一级欧美忘忧草 | 豆奶成人短视频 | 国产色视频一区二区三区QQ号 | 亚洲精品一品区二品区三品区 | 国产偷视频| 久久精品国产99久久六动漫 | 日韩国产丝袜人妻一二区 | 蜜臀AV色欲无码A片一区 | 国产三级韩国三级日产三级剧情 | 自拍1页| 免费国产女王调教在线视频 |