使用多種方式實(shí)現(xiàn)遍歷HashMap的方法
今天講解的主要是使用多種方式來(lái)實(shí)現(xiàn)遍歷HashMap取出Key和value,首先在java中如果想讓一個(gè)集合能夠用for增強(qiáng)來(lái)實(shí)現(xiàn)迭代,那么此接口或類必須實(shí)現(xiàn)Iterable接口,那么Iterable究竟是如何來(lái)實(shí)現(xiàn)迭代的,在這里將不做講解,下面主要講解一下遍歷過(guò)程。
//定義一個(gè)泛型集合 Map<String, String> map = new HashMap<String, String>(); //通過(guò)Map的put方法向集合中添加數(shù)據(jù) map.put("001", "劉備"); map.put("002", "曹操"); map.put("003", "孫權(quán)");
方式一:使用該Map接口的KeySet方法來(lái)實(shí)現(xiàn)
問(wèn)題:我們都知道Map接口并沒(méi)有實(shí)現(xiàn)Iterable接口,為什么能用他的KetSet方法就能實(shí)現(xiàn)迭代呢?
解析:因?yàn)镵eySet方法返回此映射中包含的鍵的 Set 視圖,這個(gè)方法竟然能返回一個(gè)Set試圖,也就說(shuō)他的返回值類型是一個(gè)Set接口,我們可以通過(guò)API文檔看到Set接口他是實(shí)現(xiàn)了Iterable接口,所以能實(shí)現(xiàn)迭代。
//調(diào)用KeySet方法放回一個(gè)Set接口類型 Set<String> set = map.keySet(); //使用for增強(qiáng)來(lái)取出key和value for (String item : set) { System.out.println("Key是:" + item + ";Value值是:" + map.get(item)); }
方式二:使用Map接口的Values方法實(shí)現(xiàn)(for增強(qiáng))
同理:調(diào)用Map接口的values方法他放回一個(gè)Collection試圖,Collection接口他又實(shí)現(xiàn)了Iterable接口,所以能夠迭代。
Collection<String> con = map.values(); for (String item : con) { System.out.println("Value值是:" + item); }
方式三:使用Map接口的entrySet方法實(shí)現(xiàn)(for增強(qiáng))
entrySet:entrySet()的返回值也是返回一個(gè)Set集合,此集合的類型為Map.Entry,Map.Entry是Map聲明的一個(gè)內(nèi)部接口,此接口為泛型,定義為Entry<K,V>。它表示Map中的一個(gè)實(shí)體(一個(gè)key-value對(duì))。
Set<Entry<String, String>> setentry = map.entrySet(); for (Entry<String, String> item : setentry) { System.out.println("Key是:" + item.getKey() + ";Value值是:" + item.getValue()); }
方式四:使用Map接口的keySet().Iterable()(while循環(huán))
Iterable():返回在此 set 中的元素上進(jìn)行迭代的迭代器。返回的元素沒(méi)有特定的順序(除非此 set 是某個(gè)提供順序保證的類的實(shí)例)。返回值類型Iterator<E>
Iterator<String> it = map.keySet().iterator(); //如果仍有元素可以迭代,則返回 true。 while (it.hasNext()) { //獲取Key值 String key = it.next(); System.out.println("Key是:" + key + ";Value值是:" + map.get(key)); }
方式五:使用Map接口的value.Iterable()(while循環(huán))
Iterator<String> it1 = map.values().iterator(); while (it1.hasNext()) { String value = it1.next(); System.out.println("Value值是:" + value); }
方式六:使用Map接口的entrySet().Iterable()(while循環(huán))
Iterator<Entry<String, String>> it2 = map.entrySet().iterator(); while (it2.hasNext()) { Entry<String,String> entry=it2.next(); System.out.println("Key是:" + entry.getKey() + ";Value值是:" + entry.getValue()); }
以上這篇使用多種方式實(shí)現(xiàn)遍歷HashMap的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea2023遠(yuǎn)程調(diào)試springboot的過(guò)程詳解
這篇文章主要介紹了idea2023遠(yuǎn)程調(diào)試,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08SpringDataJpa的使用之一對(duì)一、一對(duì)多、多對(duì)多?關(guān)系映射問(wèn)題
這篇文章主要介紹了SpringDataJpa的使用?--?一對(duì)一、一對(duì)多、多對(duì)多關(guān)系映射,本文主要講述?@OneToOne、@OneToMany、@ManyToOne、@ManyToMany?這四個(gè)關(guān)系映射注解的使用,以及其對(duì)應(yīng)的級(jí)聯(lián)關(guān)系,需要的朋友可以參考下2022-07-07Java Builder模式構(gòu)建MAP/LIST的實(shí)例講解
下面小編就為大家?guī)?lái)一篇Java Builder模式構(gòu)建MAP/LIST的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10mybatis連接MySQL8出現(xiàn)的問(wèn)題解決方法
這篇文章主要介紹了mybatis連接MySQL8出現(xiàn)的問(wèn)題解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10OpenJDK源碼解析之System.out.println詳解
這篇文章主要介紹了OpenJDK源碼解析之System.out.println詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04java、python、JavaScript以及jquery循環(huán)語(yǔ)句的區(qū)別
本篇文章主要介紹java、python、JavaScript以及jquery的循環(huán)語(yǔ)句的區(qū)別,這里整理了它們循環(huán)語(yǔ)句語(yǔ)法跟示例,以便大家閱讀,更好的區(qū)分它們的不同2016-07-07