天天看點

Map 接口常用操作【資料結構】

了解 Map 接口

Map 中存儲的是鍵值對(Key Value),通過Key 來找到相應的 Value

其中 key 要求是不能重複的

Map 常用操作:以 HashMap 為例

1.建立 Map 執行個體:

import java.util.HashMap;
import java.util.Map;

public class TestMap {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();

    }
}
           

泛型參數有兩個,第一個參數是 key 的類型,第二個參數是 value 的類型

key value 這種結構最主要的目的就是根據 key 找到對應的 value

2.使用 size() 擷取元素個數:

即:鍵值對的個數

Map<String,String> map = new HashMap<>();

System.out.println(map.size());

輸出結果:0
           

3.使用 isEmpty 檢視是否為空:

即:鍵值對的個數

Map<String,String> map = new HashMap<>();

System.out.println(map.isEmpty());

輸出結果:true
           

4.使用 put 方法存放鍵值對:

Map<String,String> map = new HashMap<>();

map.put("西遊記","吳承恩");
map.put("紅樓夢","曹雪芹");
map.put("水浒傳","施耐庵");
map.put("三國演義","羅貫中");
           

5.使用 get 方法,根據 key 查找對應的 value:

Map<String,String> map = new HashMap<>();

map.put("西遊記","吳承恩");
map.put("紅樓夢","曹雪芹");
map.put("水浒傳","施耐庵");
map.put("三國演義","羅貫中");

System.out.println(map.get("紅樓夢"));
System.out.println(map.get("西遊記"));
System.out.println(map.get("Java"));
           

輸出結果:

Map 接口常用操作【資料結構】

若 key 不存在,則傳回 null

6.使用 getOrDefault 方法:

如何 key 不存在,傳回預設值

Map<String,String> map = new HashMap<>();

map.put("西遊記","吳承恩");
map.put("紅樓夢","曹雪芹");
map.put("水浒傳","施耐庵");
map.put("三國演義","羅貫中");

System.out.println(map.getOrDefault("Java","不存在!"));
           

輸出結果:

Map 接口常用操作【資料結構】

7.通過 containsKey 和 containsValue 來判定某個值是否存在:

這兩種方法雖然很相似,但更推薦使用 containsKey,因為 containsKey 執行效率更高,而 containsValue 執行效率較低

Map<String,String> map = new HashMap<>();

map.put("西遊記","吳承恩");
map.put("紅樓夢","曹雪芹");
map.put("水浒傳","施耐庵");
map.put("三國演義","羅貫中");

System.out.println(map.containsKey("西遊記"));
System.out.println(map.containsValue("吳承恩"));

輸出結果: true
           true
           

8.使用 foreach 周遊 Map 中的所有鍵值對:

Map<String,String> map = new HashMap<>();

map.put("西遊記","吳承恩");
map.put("紅樓夢","曹雪芹");
map.put("水浒傳","施耐庵");
map.put("三國演義","羅貫中");

for (Map.Entry<String,String> entry : map.entrySet()) {
	System.out.println(entry.getKey() + ":" + entry.getValue());
}
           

entry 表示 一個"條目",也就是一個鍵值對;map.entrySet 擷取到所有鍵值對

輸出結果:

Map 接口常用操作【資料結構】

由上輸出結果可以看出,列印的元素順序和插入元素順序不同

Map 中的元素順序和插入元素順序無關,取決于具體的實作方式

9.使用 remove來删除鍵值對:

Map<String,String> map = new HashMap<>();

map.put("西遊記","吳承恩");
map.put("紅樓夢","曹雪芹");
map.put("水浒傳","施耐庵");
map.put("三國演義","羅貫中");

map.remove("水浒傳");
System.out.println("========删除水浒傳========");
for (Map.Entry<String,String> entry : map.entrySet()) {
	System.out.println(entry.getKey() + ":" + entry.getValue());
}
           

輸出結果:

Map 接口常用操作【資料結構】

10.使用 clear 清空所有鍵值對:

Map<String,String> map = new HashMap<>();

map.put("西遊記","吳承恩");
map.put("紅樓夢","曹雪芹");
map.put("水浒傳","施耐庵");
map.put("三國演義","羅貫中");

map.clear();
System.out.println(map.isEmpty());

輸出結果:true
           
Map 接口常用操作【資料結構】

繼續閱讀