如何迭代hashmap
2个回答
展开全部
您好,很高兴为您解答。
方法一:用entrySet,比方法二快,因为keySet迭代了2次。
Iterator i = hasmap.entrySet().iterator();
while(i.hasNext()){
Entry entry=(Entry)it.next();
Object key=entry.getKey();
Object value=entry.getValue();
}
方法二:用keySet
注意不是for循环。而是用iterator
对hashMap的迭代.是先迭代key 在迭代值的
java.util.HashMap a=new java.util.HashMap();
Iterator it= a.keySet().iterator()
while (it.hasNext())
{
Object key=it.next();
System.out.println("key:"+key);
System.out.println("value:"+a.get(key));
}
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
展开全部
各种map 在java中都实现了map接口,下面的方法适合任何一种map,只要是实现了map接口的。像hashmap,treemap,LinkeHashMap,Hashtable等等。
方法#1:通过通过循环entries 来遍历map 这种方法是最通用和效率比较好的方法。适合同时需要map的key 和value的情况。Map map =newHashMap();for(Map.Entry entry : map.entrySet()){ System.out.println("Key = "+ entry.getKey()+", Value = "+ entry.getValue());} 由于foreach循环是在java5开始有的,所以这种方法适合比较新的版本。而且这个循环会抛空指针错误,如果你循环的map 为null,所以使用时候要检查是否为null.
方法#2 通过循环key和value 来遍历如果你只是需要map的key或者values ,你可以循环遍历entrySet的keySet或者valuesMap map =newHashMap();//iterating over keys onlyfor(Integer key : map.keySet()){ System.out.println("Key = "+ key);}//iterating over values onlyfor(Integer value : map.values()){ System.out.println("Value = "+ value);}
方法#3 使用迭代器 iterator通常:Map map =newHashMap();Iterator entries = map.entrySet().iterator();while(entries.hasNext()){ Map.Entry entry = entries.next(); System.out.println("Key = "+ entry.getKey()+", Value = "+ entry.getValue());}不寻常的:Map map =newHashMap();Iterator entries = map.entrySet().iterator();while(entries.hasNext()){ Map.Entry entry =(Map.Entry) entries.next(); Integer key =(Integer)entry.getKey(); Integer value =(Integer)entry.getValue(); System.out.println("Key = "+ key +", Value = "+ value);}你可以使用同样的方法去迭代keyset和values.这种方法看起来很繁琐,但是他有他的优势。首先这个是唯一的使用老版本的map的迭代方法。其次这也是唯一一个允许在迭代过程中通过iterator.remove()来删除map中的数据。如果你试图在foreach方法中进行删除操作,你会得到预料不到的结果。从性能方面来说,这个方法与foreach循环相当。
方法#4 通过遍历key来获取对应的valueMap map =newHashMap();for(Integer key : map.keySet()){ Integer value = map.get(key); System.out.println("Key = "+ key +", Value = "+ value);}这个方法可以认为是方法#1的缩减版,但是从实际来看,这种方法是非常慢和效率低下的,因为通过key来获取value是比较耗时的。(这种方法对不同的map实现会比第一种方法慢20%--200%)。如何你有安装findbugs,你就可以检测到。鉴于效率来说,这个方法需要避免使用。其他使用#1。
方法#1:通过通过循环entries 来遍历map 这种方法是最通用和效率比较好的方法。适合同时需要map的key 和value的情况。Map map =newHashMap();for(Map.Entry entry : map.entrySet()){ System.out.println("Key = "+ entry.getKey()+", Value = "+ entry.getValue());} 由于foreach循环是在java5开始有的,所以这种方法适合比较新的版本。而且这个循环会抛空指针错误,如果你循环的map 为null,所以使用时候要检查是否为null.
方法#2 通过循环key和value 来遍历如果你只是需要map的key或者values ,你可以循环遍历entrySet的keySet或者valuesMap map =newHashMap();//iterating over keys onlyfor(Integer key : map.keySet()){ System.out.println("Key = "+ key);}//iterating over values onlyfor(Integer value : map.values()){ System.out.println("Value = "+ value);}
方法#3 使用迭代器 iterator通常:Map map =newHashMap();Iterator entries = map.entrySet().iterator();while(entries.hasNext()){ Map.Entry entry = entries.next(); System.out.println("Key = "+ entry.getKey()+", Value = "+ entry.getValue());}不寻常的:Map map =newHashMap();Iterator entries = map.entrySet().iterator();while(entries.hasNext()){ Map.Entry entry =(Map.Entry) entries.next(); Integer key =(Integer)entry.getKey(); Integer value =(Integer)entry.getValue(); System.out.println("Key = "+ key +", Value = "+ value);}你可以使用同样的方法去迭代keyset和values.这种方法看起来很繁琐,但是他有他的优势。首先这个是唯一的使用老版本的map的迭代方法。其次这也是唯一一个允许在迭代过程中通过iterator.remove()来删除map中的数据。如果你试图在foreach方法中进行删除操作,你会得到预料不到的结果。从性能方面来说,这个方法与foreach循环相当。
方法#4 通过遍历key来获取对应的valueMap map =newHashMap();for(Integer key : map.keySet()){ Integer value = map.get(key); System.out.println("Key = "+ key +", Value = "+ value);}这个方法可以认为是方法#1的缩减版,但是从实际来看,这种方法是非常慢和效率低下的,因为通过key来获取value是比较耗时的。(这种方法对不同的map实现会比第一种方法慢20%--200%)。如何你有安装findbugs,你就可以检测到。鉴于效率来说,这个方法需要避免使用。其他使用#1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询