Map.keySet()详解
keySet()是 JavaMap接口的一个重要方法,用于获取Map中所有键的集合视图。
基本用法
Map<String, Integer> map = new HashMap<>(); map.put("Apple", 100); map.put("Banana", 200); map.put("Orange", 150); // 获取所有键 Set<String> keys = map.keySet(); System.out.println(keys); // [Apple, Banana, Orange] // 遍历所有键 for (String key : map.keySet()) { System.out.println(key + " = " + map.get(key)); }重要特性
1.返回的是Set集合
Set<String> keys = map.keySet(); // 键不能重复(Set的特性) // 键的顺序取决于Map实现: // - HashMap: 无序 // - LinkedHashMap: 插入顺序 // - TreeMap: 自然顺序2.视图(View)特性
Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); Set<String> keys = map.keySet(); // 修改Map会影响keySet map.put("key3", "value3"); System.out.println(keys.size()); // 3 ✅ // 通过keySet删除键会影响Map keys.remove("key1"); System.out.println(map.containsKey("key1")); // false ✅ // 但不能通过keySet添加元素 keys.add("key4"); // ❌ UnsupportedOperationException3.性能考虑
// ❌ 低效:每次循环都调用get() for (String key : map.keySet()) { String value = map.get(key); // 额外查找 // 处理... } // ✅ 高效:使用entrySet()直接获取键值对 for (Map.Entry<String, String> entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); // 处理... }