HashMap 的7種遍歷方式
76套java從入門到精通實(shí)戰(zhàn)課程分享
HashMap 遍歷
大體上可以分為4類:
1,迭代器
2,F(xiàn)orEach 遍歷
3,lambda 表達(dá)式遍歷
4,StreamsApi 遍歷
但是每種類型下有不同的實(shí)現(xiàn)方式,所以又可以分為7種:

案例demo
1,使用迭代器 EntrySet 的方式遍歷
@Test
//1,使用迭代器 EntrySet 的方式遍歷
public void demo1(){
//創(chuàng)建Map 對(duì)象
Map<Integer, String> map = new HashMap<>();
//添加數(shù)據(jù)
map.put(1,"嬌嬌");
map.put(2,"嬌嬌1");
map.put(3,"嬌嬌2");
map.put(4,"嬌嬌3");
map.put(5,"嬌嬌4");
map.put(5,"嬌嬌5");
//遍歷
Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<Integer, String> next = iterator.next();
System.out.println(next.getKey());
System.out.println(next.getValue());
}
}
結(jié)果

2,使用迭代器的KeySet
@Test
// 2,使用迭代器的KeySet
public void demo1(){
//創(chuàng)建Map 對(duì)象
Map<Integer, String> map = new HashMap<>();
//添加數(shù)據(jù)
map.put(1,"嬌嬌");
map.put(2,"嬌嬌1");
map.put(3,"嬌嬌2");
map.put(4,"嬌嬌3");
map.put(5,"嬌嬌4");
map.put(5,"嬌嬌5");
//遍歷
Iterator<Integer> iterator = map.keySet().iterator();
while (iterator.hasNext()){
Integer key = iterator.next();
System.out.print(key);
System.out.print(map.get(key));
}
}
結(jié)果

3,使用 For Each EntrySet 的方式進(jìn)行遍歷;
@Test
//3,使用 For Each EntrySet 的方式進(jìn)行遍歷;
public void demo1(){
//創(chuàng)建Map 對(duì)象
Map<Integer, String> map = new HashMap<>();
//添加數(shù)據(jù)
map.put(1,"嬌嬌");
map.put(2,"嬌嬌1");
map.put(3,"嬌嬌2");
map.put(4,"嬌嬌3");
map.put(5,"嬌嬌4");
map.put(5,"嬌嬌5");
//遍歷
for (Map.Entry<Integer,String> entry: map.entrySet()
) {
System.out.println("entry.getKey() = " + entry.getKey());
System.out.println("entry.getValue() = " + entry.getValue());
}
}
結(jié)果

4,使用 For Each KeySet 的方式進(jìn)行遍歷;
@Test
//4,使用 For Each KeySet 的方式進(jìn)行遍歷;
public void demo1(){
//創(chuàng)建Map 對(duì)象
Map<Integer, String> map = new HashMap<>();
//添加數(shù)據(jù)
map.put(1,"嬌嬌");
map.put(2,"嬌嬌1");
map.put(3,"嬌嬌2");
map.put(4,"嬌嬌3");
map.put(5,"嬌嬌4");
map.put(5,"嬌嬌5");
//遍歷
for (Integer key: map.keySet()
) {
System.out.println(key);
System.out.println(map.get(key));
}
}
結(jié)果

5,使用 Lambda 表達(dá)式的方式進(jìn)行遍歷;
@Test
//5,使用 Lambda 表達(dá)式的方式進(jìn)行遍歷;
public void demo1() {
//創(chuàng)建Map 對(duì)象
Map<Integer, String> map = new HashMap<>();
//添加數(shù)據(jù)
map.put(1, "嬌嬌");
map.put(2, "嬌嬌1");
map.put(3, "嬌嬌2");
map.put(4, "嬌嬌3");
map.put(5, "嬌嬌4");
map.put(5, "嬌嬌5");
//遍歷
map.forEach((key,value) -> {
System.out.print(key);
System.out.print(value);
});
}
結(jié)果

6,使用 Streams API 單線程的方式進(jìn)行遍歷;
@Test
//6,使用 Streams API 單線程的方式進(jìn)行遍歷;
public void demo1() {
//創(chuàng)建Map 對(duì)象
Map<Integer, String> map = new HashMap<>();
//添加數(shù)據(jù)
map.put(1, "嬌嬌");
map.put(2, "嬌嬌1");
map.put(3, "嬌嬌2");
map.put(4, "嬌嬌3");
map.put(5, "嬌嬌4");
map.put(5, "嬌嬌5");
//遍歷
map.entrySet().stream().forEach((integerStringEntry -> {
System.out.println(integerStringEntry.getKey());
System.out.println(integerStringEntry.getValue());
}));
}
結(jié)果

7,使用 Streams API 多線程的方式進(jìn)行遍歷。
@Test
//6,使用 Streams API 單線程的方式進(jìn)行遍歷;
public void demo1() {
//創(chuàng)建Map 對(duì)象
Map<Integer, String> map = new HashMap<>();
//添加數(shù)據(jù)
map.put(1, "嬌嬌");
map.put(2, "嬌嬌1");
map.put(3, "嬌嬌2");
map.put(4, "嬌嬌3");
map.put(5, "嬌嬌4");
map.put(5, "嬌嬌5");
//遍歷
map.entrySet().parallelStream().forEach((integerStringEntry -> {
System.out.println(integerStringEntry.getKey());
System.out.println(integerStringEntry.getValue());
}));
}
結(jié)果

————————————————
版權(quán)聲明:本文為CSDN博主「我的代碼沒錯(cuò)」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:
https://blog.csdn.net/m0_46937429/article/details/114999490
關(guān)注公眾號(hào)【Java技術(shù)江湖】后回復(fù)“PDF”即可領(lǐng)取200+頁的《Java工程師面試指南》
強(qiáng)烈推薦,幾乎涵蓋所有Java工程師必知必會(huì)的知識(shí)點(diǎn),不管是復(fù)習(xí)還是面試,都很實(shí)用。

評(píng)論
圖片
表情
