使用多種方式實(shí)現(xiàn)遍歷HashMap的方法
今天講解的主要是使用多種方式來實(shí)現(xiàn)遍歷HashMap取出Key和value,首先在java中如果想讓一個(gè)集合能夠用for增強(qiáng)來實(shí)現(xiàn)迭代,那么此接口或類必須實(shí)現(xiàn)Iterable接口,那么Iterable究竟是如何來實(shí)現(xiàn)迭代的,在這里將不做講解,下面主要講解一下遍歷過程。
//定義一個(gè)泛型集合
Map<String, String> map = new HashMap<String, String>();
//通過Map的put方法向集合中添加數(shù)據(jù)
map.put("001", "劉備");
map.put("002", "曹操");
map.put("003", "孫權(quán)");
方式一:使用該Map接口的KeySet方法來實(shí)現(xiàn)
問題:我們都知道Map接口并沒有實(shí)現(xiàn)Iterable接口,為什么能用他的KetSet方法就能實(shí)現(xiàn)迭代呢?
解析:因?yàn)镵eySet方法返回此映射中包含的鍵的 Set 視圖,這個(gè)方法竟然能返回一個(gè)Set試圖,也就說他的返回值類型是一個(gè)Set接口,我們可以通過API文檔看到Set接口他是實(shí)現(xiàn)了Iterable接口,所以能實(shí)現(xiàn)迭代。
//調(diào)用KeySet方法放回一個(gè)Set接口類型
Set<String> set = map.keySet();
//使用for增強(qiáng)來取出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對)。
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)行迭代的迭代器。返回的元素沒有特定的順序(除非此 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的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)反向代理的示例代碼
本文主要介紹了SpringBoot實(shí)現(xiàn)反向代理的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
詳解Java利用同步塊synchronized()保證并發(fā)安全
這篇文章主要介紹了Java利用同步塊synchronized()保證并發(fā)安全,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
springBoot動(dòng)態(tài)加載jar及如何將類注冊到IOC
在SpringBoot項(xiàng)目中動(dòng)態(tài)加載jar文件并將其類注冊到IOC容器是一種高級應(yīng)用方式,,這種方法為SpringBoot項(xiàng)目提供了更靈活的擴(kuò)展能力,使得項(xiàng)目可以在不修改原有代碼的基礎(chǔ)上增加新的功能模塊,感興趣的朋友一起看看吧2024-11-11
Spring Eureka 未授權(quán)訪問漏洞修復(fù)問題小結(jié)
項(xiàng)目組使用的 Spring Boot 比較老,是 1.5.4.RELEASE ,最近被檢測出 Spring Eureka 未授權(quán)訪問漏洞,這篇文章主要介紹了Spring Eureka 未授權(quán)訪問漏洞修復(fù)問題小結(jié),需要的朋友可以參考下2024-04-04
maven pom中內(nèi)置變量及引用的實(shí)現(xiàn)
maven其實(shí)有很多內(nèi)置變量供開發(fā)著在開發(fā)中使用,本文主要介紹了maven pom中內(nèi)置變量及引用的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

