今天講解的主要是使用多種方式來實現(xiàn)遍歷HashMap取出Key和value,首先在java中如果想讓一個集合能夠用for增強來實現(xiàn)迭代,那么此接口或類必須實現(xiàn)Iterable接口,那么Iterable究竟是如何來實現(xiàn)迭代的,在這里將不做講解,下面主要講解一下遍歷過程。
1
2
3
4
5
6
|
//定義一個泛型集合 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方法來實現(xiàn)
問題:我們都知道Map接口并沒有實現(xiàn)Iterable接口,為什么能用他的KetSet方法就能實現(xiàn)迭代呢?
解析:因為KeySet方法返回此映射中包含的鍵的 Set 視圖,這個方法竟然能返回一個Set試圖,也就說他的返回值類型是一個Set接口,我們可以通過API文檔看到Set接口他是實現(xiàn)了Iterable接口,所以能實現(xiàn)迭代。
1
2
3
4
5
6
|
//調(diào)用KeySet方法放回一個Set接口類型 Set<String> set = map.keySet(); //使用for增強來取出key和value for (String item : set) { System.out.println( "Key是:" + item + ";Value值是:" + map.get(item)); } |
方式二:使用Map接口的Values方法實現(xiàn)(for增強)
同理:調(diào)用Map接口的values方法他放回一個Collection試圖,Collection接口他又實現(xiàn)了Iterable接口,所以能夠迭代。
1
2
3
4
|
Collection<String> con = map.values(); for (String item : con) { System.out.println( "Value值是:" + item); } |
方式三:使用Map接口的entrySet方法實現(xiàn)(for增強)
entrySet:entrySet()的返回值也是返回一個Set集合,此集合的類型為Map.Entry,Map.Entry是Map聲明的一個內(nèi)部接口,此接口為泛型,定義為Entry<K,V>。它表示Map中的一個實體(一個key-value對)。
1
2
3
4
5
|
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 中的元素上進行迭代的迭代器。返回的元素沒有特定的順序(除非此 set 是某個提供順序保證的類的實例)。返回值類型Iterator<E>
1
2
3
4
|
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))
1
2
3
4
5
|
Iterator<String> it1 = map.values().iterator(); while (it1.hasNext()) { String value = it1.next(); System.out.println( "Value值是:" + value); } |
方式六:使用Map接口的entrySet().Iterable()(while循環(huán))
1
2
3
4
5
|
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()); } |
以上這篇使用多種方式實現(xiàn)遍歷HashMap的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。