Java中Map的概述
Java中的Map接口是一种集合,它存储键值对(key-value pairs),其中每个键都与一个值相关联,Map接口继承了Collection接口,因此它也实现了一些通用的集合操作,如添加、删除和遍历元素等,在Java中,Map接口有两个实现类:HashMap和TreeMap,HashMap是一个基于哈希表的实现,它提供了快速的查找、插入和删除操作;而TreeMap是一个基于红黑树的实现,它按照键的自然顺序或者自定义的比较器进行排序。
遍历Map的key
在Java中,有多种方法可以遍历Map的key,以下是四种常见的方法:
1、使用entrySet()方法和for-each循环遍历
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println("Key: " + entry.getKey()); } } }
2、使用keySet()方法和for-each循环遍历
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); for (String key : map.keySet()) { System.out.println("Key: " + key); } } }
3、使用迭代器()方法和for-each循环遍历
import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); Iterator<String> iterator = map.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next(); System.out.println("Key: " + key); } } }
4、使用for-each循环直接遍历key(不推荐)
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); for (String key : map.keySet()) { // 不推荐使用这种方式直接遍历key,因为这样无法获取到对应的value信息,正确的做法应该是使用entrySet()方法或通过迭代器的next()方法获取到键值对,如果需要同时获取键和值,可以使用entrySet()方法遍历,如果只关心键,可以使用迭代器的next()方法遍历,如果需要按照某种规则对键进行排序,可以使用TreeMap,如果需要将键值对转换为其他数据结构,可以使用Collectors工具类提供的toXxx()方法,尽量避免直接遍历Map的key,以免引发潜在的问题,如果在遍历过程中修改了Map的结构,可能会导致ConcurrentModificationException异常,直接遍历key也无法获取到对应的value信息,这在使用某些场景下可能会导致问题,建议尽量使用其他方法来遍历Map的key。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/133334.html