Java高階_Day07(Map特點、常用方法、遍歷)
阿新 • • 發佈:2021-01-14
Java高階_Day07(Map特點、常用方法、遍歷)
Map
Map 的典型實現:HashMap LinkedHashMap TreeMap HashTable (Properties)
Map的特點
- 與Collection並列的集合
- 用於儲存具有對映關係的物件 (對映物件以鍵值對的形式存在 key–value)
- 不能包含重複的鍵; 每個鍵可以對映到最多一個值
- 鍵不能重複 值可重複
- 元素的存取是無序的
數學中的對映 一個x對應一個y 一個y 可以被多個x對映
Map介面中的常用方法
- 新增:
public static void main(String[] args) {
// 建立集合
Map<String, String> map = new HashMap<>();
//新增元素
map.put("1001","張三");
map.put("1002","李四");
map.put("1003","王五");
map.put("1004","王五");
Map<String,String> map1 = new HashMap<>();
map1.put("20001","AAA");
map1.put("20002","BBB");
map1.put("20003","CCC");
// 輸出集合物件
map.putAll(map1);//將map1中的元素新增到map中
System.out.println(map);
}
- 刪除:
public static void main(String[] args) {
// 建立集合
Map<String, String> map = new HashMap<>();
//新增元素
map.put("1001","張三");
map.put("1002","李四");
map.put("1003","王五");
map.put("1004","王五");
Map<String,String> map1 = new HashMap<>();
map1.put("20001","AAA");
map1.put("20002","BBB");
map1.put("20003","CCC");
// 輸出集合物件
map.putAll(map1);//將map1中的元素新增到map中
//remove
map.remove("1001");//根據鍵刪除集合中的鍵值對
boolean b = map.remove("1002","王五");//根據鍵值對刪除map中的鍵值對 但是傳入的鍵值對必須和map中的鍵值對匹配
System.out.println(b);
System.out.println(map);
}
- 修改:
// 修改
map.replace("1003","admin");//根據鍵修改值
//這種修改必須保證所修改的鍵值對在map中存在相應的對映關係
map.replace("1003","admin","adminstrator");
System.out.println(map);
- 獲取的方法:
public static void main(String[] args) {
//建立Map集合
Map<String,String> map = new HashMap<>();
map.put("郭靖","黃蓉");
map.put("楊過","小龍女");
map.put("張無忌","趙敏");
//通過鍵 獲取值 V get(Object key)
String v1 = map.get("楊過");
System.out.println(v1);
// 獲取所有的鍵的Set集合
Set<String> keySet = map.keySet();
for(String str : keySet){
System.out.println(str);
}
//獲取所有的 值的集合 集合是Collection
Collection<String> values = map.values();
for (String str : values){
System.out.println(str);
}
System.out.println("----------------------");
// 獲取所有的 鍵值對的Set集合
Set<Map.Entry<String,String>> entrySet = map.entrySet();
for(Map.Entry<String,String> entry : entrySet ){
System.out.println(entry);
}
}
- 判斷的方法:
//判斷 判斷集合是否為空
System.out.println(map.isEmpty());// 集合中不包含任何的鍵值對 則返回true
System.out.println(map.containsKey("1002"));//判斷集合是否包含某一個key
System.out.println(map.containsValue("admin"));//判斷集合中是否包含某一個值
Map集合的遍歷
- 方式一:
獲取Map集合中的鍵集 在使用map所提供的通過鍵獲取值的方式來進行遍歷所有的元素
public static void main(String[] args) {
//建立Map集合
Map<String,String> map = new HashMap<>();
map.put("郭靖","黃蓉");
map.put("楊過","小龍女");
map.put("張無忌","趙敏");
//遍歷方式一:獲取Map集合中的鍵集 在使用map所提供的通過鍵獲取值的方式來進行遍歷所有的元素
Set<String> keySet = map.keySet();
for(String key : keySet){
String value = map.get(key);
System.out.println(key +"--"+value);
}
}
- 方式二:
藉助於Map.Entry物件
//方式二
Set<Map.Entry<String,String>> entrySet = map.entrySet();
for(Map.Entry<String,String> entry : entrySet){
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " ----" + value);
}
// 使用迭代器進行迭代 entrySet
Iterator<Map.Entry<String,String>> iter = entrySet.iterator();
while(iter.hasNext()){
Map.Entry<String,String> entry = iter.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " ----" + value);
}