當前位置: 妍妍網 > 碼農

HashMap 竟然有7種遍歷方式~

2024-07-10碼農

HashMap 遍歷,大體上可以分為4類:

  1. 叠代器

  2. ForEach 遍歷

  3. lambda 運算式遍歷

  4. StreamsApi 遍歷

但是每種型別下有不同的實作方式,所以又可以分為7種:

案例demo

1,使用叠代器 EntrySet 的方式遍歷

此方法效率最佳

@Test
//1,使用叠代器 EntrySet 的方式遍歷
publicvoiddemo1(){
//建立Map 物件
Map<Integer, String> map = new HashMap<>();
//添加數據
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());
}
}

結果

2,使用叠代器的KeySet

@Test
// 2,使用叠代器的KeySet
publicvoiddemo1(){
//建立Map 物件
Map<Integer, String> map = new HashMap<>();
//添加數據
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));
}
}

結果

3,使用 For Each EntrySet 的方式進行遍歷

@Test
//3,使用 For Each EntrySet 的方式進行遍歷;
publicvoiddemo1(){
//建立Map 物件
Map<Integer, String> map = new HashMap<>();
//添加數據
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());
}
}

結果

4,使用 For Each KeySet 的方式進行遍歷;

@Test
//4,使用 For Each KeySet 的方式進行遍歷;
publicvoiddemo1(){
//建立Map 物件
Map<Integer, String> map = new HashMap<>();
//添加數據
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));
}
}

結果

5,使用 Lambda 運算式的方式進行遍歷

@Test
//5,使用 Lambda 運算式的方式進行遍歷;
publicvoiddemo1(){
//建立Map 物件
Map<Integer, String> map = new HashMap<>();
//添加數據
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);

});
}

結果

6,使用 Streams API 單執行緒的方式進行遍歷

@Test
//6,使用 Streams API 單執行緒的方式進行遍歷;
publicvoiddemo1(){
//建立Map 物件
Map<Integer, String> map = new HashMap<>();
//添加數據
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());
}));
}

結果

7,使用 Streams API 多執行緒的方式進行遍歷

@Test
//6,使用 Streams API 單執行緒的方式進行遍歷;
publicvoiddemo1(){
//建立Map 物件
Map<Integer, String> map = new HashMap<>();
//添加數據
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());
}));
}

結果

來源:blog.csdn.net/m0_46937429/article/details/114999490

>>

END

精品資料,超贊福利,免費領

微信掃碼/長按辨識 添加【技術交流群

群內每天分享精品學習資料

最近開發整理了一個用於速刷面試題的小程式;其中收錄了上千道常見面試題及答案(包含基礎並行JVMMySQLRedisSpringSpringMVCSpringBootSpringCloud訊息佇列等多個型別),歡迎您的使用。

👇👇

👇點選"閱讀原文",獲取更多資料(持續更新中