一、使用Map自带的keySet()方法获取所有的Key
Map<String, Integer> map = new HashMap<>(); map.put("Tom", 18); map.put("Jerry", 21); map.put("Alice", 25); Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println(key); }
使用Map自带的keySet()方法可以获取到所有的Key,然后可以使用增强的for循环遍历Key,明确、简洁、易懂。
二、使用Map自带的keys()方法获取Key的集合
Map<String, Integer> map = new HashMap<>(); map.put("Tom", 18); map.put("Jerry", 21); map.put("Alice", 25); Collection<String> keys = map.keySet(); for (String key : keys) { System.out.println(key); }
使用Map自带的keys()方法可以获取Key的集合,与keySet()方法类似,但是keys()方法返回的是Collection实例,而不是Set实例。Collection是一个更加通用的集合类型,因此在某些情况下可能更适合使用。
三、使用entrySet()方法实现遍历并获取Key
Map<String, Integer> map = new HashMap<>(); map.put("Tom", 18); map.put("Jerry", 21); map.put("Alice", 25); Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); for (Map.Entry<String, Integer> entry : entrySet) { System.out.println(entry.getKey()); }
使用entrySet()方法可以遍历Map,并返回一个包含所有键值对的Set集合。我们可以通过entry.getKey()方法获取Key值,同时也可以通过entry.getValue()方法获取对应的Value值。
四、使用Iterator迭代器遍历Map并获取Key
Map<String, Integer> map = new HashMap<>(); map.put("Tom", 18); map.put("Jerry", 21); map.put("Alice", 25); Iterator<String> iterator = map.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next(); System.out.println(key); }
使用Iterator迭代器遍历Map,同样可以获取Key值。比较适用于在Java 5之前的老版本中使用,代码最为繁琐,但同时也是一种最原始和最基本的遍历方式。
五、使用Java 8新增的Lambda表达式遍历Map并获取Key
Map<String, Integer> map = new HashMap<>(); map.put("Tom", 18); map.put("Jerry", 21); map.put("Alice", 25); map.keySet().forEach(key -> System.out.println(key));
使用Java 8新增的Lambda表达式,我们可以在一行代码中完成对Map遍历获取Key的操作。相比Java 5之前的Iterator方式,这种方式代码简洁、易懂,省去了Iterator迭代器的一些过程。
总结
本篇文章从多个方面介绍了Java工程师在获取Map的Key值时可以采用的不同方法。它们分别是使用Map自带的keySet()方法、keys()方法、entrySet()方法、Iterator迭代器和Java 8中新增的Lambda表达式。不同的方法适用于不同的场景,它们各有优点和局限性,Java工程师在选择实现方法时应该根据实际情况进行选择。在代码实现方面,我们应该尽量避免繁琐冗余的代码,寻求在“简洁、优雅、高效”的前提下,尽可能简化代码的复杂性。