遍历 HashMap 的 5 种最佳方式,我不信你全知道!(附源码)

522 阅读2分钟

对于一个程序员,哪怕是刚开始工作或者刚开始学习的人,有一个是你一定很熟悉的技术,hashmap,这是我们在日常开发过程中比较常用,在面试的过程中也比较常问的技术,在hashmap的面试问题中,遍历又是重中之重,但是,你真的能够把五种hashmap的遍历方式都说明白吗?不见得。或者说你能直到是哪五种遍历方式,但是能手写出来吗?

ok,没问题,有则复习,无则学习,来看一下我整理的五种遍历方式吧

使用 Iterator 遍历 HashMap EntrySet

使用 Iterator 遍历 HashMap KeySet

使用 For-each 循环迭代 HashMap

使用 Lambda 表达式遍历 HashMap

使用 Stream API 遍历 HashMap

1. 使用 Iterator 遍历 HashMap EntrySet

package com.java.tutorials.iterations;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;

/**

* 在 Java 中遍历 HashMap 的5种最佳方法

* @author Ramesh Fadatare

*

*/

public class IterateHashMapExample {

public static void main(String[] args) {

// 1. 使用 Iterator 遍历 HashMap EntrySet

Map < Integer, String > coursesMap = new HashMap < Integer, String > ();

coursesMap.put(1, "C");

coursesMap.put(2, "C++");

coursesMap.put(3, "Java");

coursesMap.put(4, "Spring Framework");

coursesMap.put(5, "Hibernate ORM framework");

Iterator < Entry < Integer, String >> iterator = coursesMap.entrySet().iterator();

while (iterator.hasNext()) {

Entry < Integer, String > entry = iterator.next();

System.out.println(entry.getKey());

System.out.println(entry.getValue());

}

}

}

Output:

1

C

2

C++

3

Java

4

Spring Framework

5

Hibernate ORM framework

2. 使用 Iterator 遍历 HashMap KeySet

package com.java.tutorials.iterations;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

/**

* 在 Java 中遍历 HashMap 的5种最佳方法

* @author Ramesh Fadatare

*

*/

public class IterateHashMapExample {

public static void main(String[] args) {

Map < Integer, String > coursesMap = new HashMap < Integer, String > ();

coursesMap.put(1, "C");

coursesMap.put(2, "C++");

coursesMap.put(3, "Java");

coursesMap.put(4, "Spring Framework");

coursesMap.put(5, "Hibernate ORM framework");

// 2. 使用 Iterator 遍历 HashMap KeySet

Iterator < Integer > iterator = coursesMap.keySet().iterator();

while (iterator.hasNext()) {

Integer key = iterator.next();

System.out.println(key);

System.out.println(coursesMap.get(key));

}

}

}

Output:

1

C

2

C++

3

Java

4

Spring Framework

5

Hibernate ORM framework

3. 使用 For-each 循环遍历 HashMap

package com.java.tutorials.iterations;

import java.util.HashMap;

import java.util.Map;

/**

* 在 Java 中遍历 HashMap 的5种最佳方法

* @author Ramesh Fadatare

*

*/

public class IterateHashMapExample {

public static void main(String[] args) {

Map < Integer, String > coursesMap = new HashMap < Integer, String > ();

coursesMap.put(1, "C");

coursesMap.put(2, "C++");

coursesMap.put(3, "Java");

coursesMap.put(4, "Spring Framework");

coursesMap.put(5, "Hibernate ORM framework");

// 3. 使用 For-each 循环遍历 HashMap

for (Map.Entry < Integer, String > entry: coursesMap.entrySet()) {

System.out.println(entry.getKey());

System.out.println(entry.getValue());

}

}

}

Output:

1

C

2

C++

3

Java

4

Spring Framework

5

Hibernate ORM framework

4. 使用 Lambda 表达式遍历 HashMap

package com.java.tutorials.iterations;

import java.util.HashMap;

import java.util.Map;

/**

* 在 Java 中遍历 HashMap 的5种最佳方法

* @author Ramesh Fadatare

*

*/

public class IterateHashMapExample {

public static void main(String[] args) {

Map < Integer, String > coursesMap = new HashMap < Integer, String > ();

coursesMap.put(1, "C");

coursesMap.put(2, "C++");

coursesMap.put(3, "Java");

coursesMap.put(4, "Spring Framework");

coursesMap.put(5, "Hibernate ORM framework");

// 4. 使用 Lambda 表达式遍历 HashMap

coursesMap.forEach((key, value) -> {

System.out.println(key);

System.out.println(value);

});

}

}

Output:

1

C

2

C++

3

Java

4

Spring Framework

5

Hibernate ORM framework

5. 使用 Stream API 遍历 HashMap

package com.java.tutorials.iterations;

import java.util.HashMap;

import java.util.Map;

/**

* 在 Java 中遍历 HashMap 的5种最佳方法

* @author Ramesh Fadatare

*

*/

public class IterateHashMapExample {

public static void main(String[] args) {

Map < Integer, String > coursesMap = new HashMap < Integer, String > ();

coursesMap.put(1, "C");

coursesMap.put(2, "C++");

coursesMap.put(3, "Java");

coursesMap.put(4, "Spring Framework");

coursesMap.put(5, "Hibernate ORM framework");

// 5. 使用 Stream API 遍历 HashMap

coursesMap.entrySet().stream().forEach((entry) - > {

System.out.println(entry.getKey());

System.out.println(entry.getValue());

});

}

}

Output:

1

C

2

C++

3

Java

4

Spring Framework

5

Hibernate ORM framework

觉得对自己有帮助的,欢迎点赞关注转发

需要更多架构资料以及视频讲解缓存击穿问题,添加微信公众号:Java架构师联盟

或扫面二维码添加


小编会不定时的发放文章以及技术讲解视频,谢谢