您的位置 首页 java

Java面试中让手写的代码之map、set、list的遍历

今天我们来说一下比较基础的一个面试问题 map 、list、set的遍历问题。今天我们重点了解下map的遍历问题也是面试中最常遇到的问题:

Map的遍历

Map<Integer,Integer> map=new HashMap<Integer,Integer>();
 

方法一(同时遍历键和值):

Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for (map.Entry<Intger,Intger> entry : map.entrySet()) {
 System.out.println("key="+entry.getKey+"Value="+entry.getValue);
 
}
 

在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

注意:for-each循环在 Java 5中才被引入,所以该方法只能应用于java 5或更高的版本中。 并且假如遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。

方法二(只遍历键或值):

//只遍历map中的键 
for(Integer key:map.keySet())
{
 System.out.println("key="+key);
} 
//遍历map中的值 
for(Integer value:map.values)
{
 System.out.println("Valuer="+value);
}
 

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

该方法比方法一种entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

方法三(同时遍历键和值,效率低)

for(Integer key:map.keySet())
{
 Integer value=map.get(key);
 System.out.println("Key = " + key + ", Value = " + value);
}
 

使用该方法虽然写起来更加简洁但是却有严重的效率问题,及其不推荐使用,因为从键取值是耗时的操作。

所以进行map遍历操作时假如是java5以上时需要键和值都需要遍历的情况下选用方法一,只需要键或值一个遍历时优先使用方法二。

文章来源:智云一二三科技

文章标题:Java面试中让手写的代码之map、set、list的遍历

文章地址:https://www.zhihuclub.com/196147.shtml

关于作者: 智云科技

热门文章

网站地图