🐓map的概念
Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的键值对。key和value都可以是任何引用类型的数据。Map的Key值为set,不允许重复,即同一个Map对象的任何两个key通过equals方法比较结果总是返回false。
通常会在后端面试中问到HashMap的底层原理,或者是机试中map的遍历,在公司中也经常会使用到map数据结构和list数据结构。
🐓map的遍历
🚩 0.前置条件
//创建一个Map
Map<String, Integer> hashMap = new HashMap<>();
//将map中存储数据
hashMap.put("key1",1);
hashMap.put("key2",2);
hashMap.put("key3",3);
🚩 1.iterator+entrySet写法
代码
Iterator<Map.Entry<String, Integer>> iterator = hashMap.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, Integer> entry = iterator.next();
System.out.print(entry.getKey());
System.out.println(entry.getValue());
}
执行时间
🚩 2.iterator+keyset写法
代码
Iterator<String> iterator1 = hashMap.keySet().iterator();
while (iterator1.hasNext()){
String key = iterator1.next();
System.out.print(key);
System.out.println(hashMap.get(key));
}
执行时间
🚩 3.加强for循环
代码
for (Map.Entry<String,Integer> entry: hashMap.entrySet()) {
System.out.print(entry.getKey());
System.out.println(entry.getValue());
}
执行时间
🚩 4.lambda表达式遍历
代码
hashMap.forEach((key,value)->{
System.out.print(key);
System.out.println(value);
});
执行时间
🚩 5.使用steam流
代码
hashMap.entrySet().stream().forEach((Map.Entry<String,Integer> entry)->{
System.out.print(entry.getKey());
System.out.println(entry.getValue());
} );
执行时间
🚩 遍历效率对比(每个系统性能不同,因机器而异,个人测试):
个人观点:
执行效率:iterator+entrySet>iterator+keyset>加强for循环>lambda表达式>steam