使用多种方式实现遍历HashMap的方法
今天讲解的主要是使用多种方式来实现遍历HashMap取出Key和value,首先在java中如果想让一个集合能够用for增强来实现迭代,那么此接口或类必须实现Iterable接口,那么Iterable究竟是如何来实现迭代的,在这里将不做讲解,下面主要讲解一下遍历过程。
//定义一个泛型集合 Map<String,String>map=newHashMap<String,String>(); //通过Map的put方法向集合中添加数据 map.put("001","刘备"); map.put("002","曹操"); map.put("003","孙权");
方式一:使用该Map接口的KeySet方法来实现
问题:我们都知道Map接口并没有实现Iterable接口,为什么能用他的KetSet方法就能实现迭代呢?
解析:因为KeySet方法返回此映射中包含的键的Set视图,这个方法竟然能返回一个Set试图,也就说他的返回值类型是一个Set接口,我们可以通过API文档看到Set接口他是实现了Iterable接口,所以能实现迭代。
//调用KeySet方法放回一个Set接口类型 Set<String>set=map.keySet(); //使用for增强来取出key和value for(Stringitem:set){ System.out.println("Key是:"+item+";Value值是:"+map.get(item)); }
方式二:使用Map接口的Values方法实现(for增强)
同理:调用Map接口的values方法他放回一个Collection试图,Collection接口他又实现了Iterable接口,所以能够迭代。
Collection<String>con=map.values(); for(Stringitem:con){ System.out.println("Value值是:"+item); }
方式三:使用Map接口的entrySet方法实现(for增强)
entrySet:entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry,Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个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循环)
Iterable():返回在此set中的元素上进行迭代的迭代器。返回的元素没有特定的顺序(除非此set是某个提供顺序保证的类的实例)。返回值类型Iterator<E>
Iterator<String>it=map.keySet().iterator(); //如果仍有元素可以迭代,则返回true。while(it.hasNext()){//获取Key值 Stringkey=it.next();System.out.println("Key是:"+key+";Value值是:"+map.get(key)); }
方式五:使用Map接口的value.Iterable()(while循环)
Iterator<String>it1=map.values().iterator(); while(it1.hasNext()){ Stringvalue=it1.next(); System.out.println("Value值是:"+value); }
方式六:使用Map接口的entrySet().Iterable()(while循环)
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()); }
以上这篇使用多种方式实现遍历HashMap的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。