🐓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