Java中Map的几种遍历方式

方式一:也是最常用的,通常在key和value都需要的情况下使用。

Map map = new HashMap<>();
		map.put("1", "张三");
		map.put("2", "李四");
		map.put("3", "王五");
		
		for (Map.Entry entry : map.entrySet()) {
			String key = entry.getKey();
			System.out.println("键---"+key);
			String value = entry.getValue();
			System.out.println("值---"+value);
		}

方式二:在for-each循环中遍历keys或values。

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

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

Map map = new HashMap<>();
		map.put("1", "张三");
		map.put("2", "李四");
		map.put("3", "王五");
		for(String key:map.keySet()) {
			System.out.println("键---"+key);
		}

        for(String value:map.values()) {
			System.out.println("值---"+value);
		}

方式三:使用Iterator遍历

Map map = new HashMap<>();
		map.put("1", "张三");
		map.put("2", "李四");
		map.put("3", "王五");
		Iterator> iterator = map.entrySet().iterator();
		while (iterator.hasNext()) {
			Entry next = iterator.next();
			System.out.println("key---" + next.getKey() + "value-----" + next.getValue());
		}

方式四:通过键找值遍历(效率低)

作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。

总结

如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。

Map map = new HashMap<>();
		map.put("1", "张三");
		map.put("2", "李四");
		map.put("3", "王五");
		for (String key : map.keySet()) {
			System.out.println("key----" + key);
			System.out.println("value----" + map.get(key));
		}

 

你可能感兴趣的:(java,java,基础)