Map容器
Map自己就是頂級接口,他並不是Collection的子接口。List的頂級接口是Collection,Collection上面還有一個接口Iterable。
list、set放置內容的時候,使用的都是單一一個泛型來確定放置的內容的類型是什麼
Map的一些方法
確認是否有鍵值containsKey
,確認是否有值containsValue
,確實是否爲空isEmpty
,長度size
,放置內容put
,取出內容get(key)
,刪除內容remove
,轉換成容器values
public class Main {
public static void main(String[] args) {
//映射表
//map中存的是K-V對,我們放置內容的時候,確定一下Key值和V值,這兩個值
//一一對應,我們取值的時候,使用的是Key值來取出V值
Map<String,Student> map = new HashMap<>();
map.put("liguocheng",new Student("liguocheng",23)); //添加
System.out.println(map.get("liguocheng"));//獲取/替換
System.out.println(map.size()); //求長
Student s = new Student("libin",99);
map.put("liguocheng",s);//下來輸出size大小爲1,因爲裏面不能放重複的Key值。如果一樣,則後面添加的把前面添加的覆蓋
System.out.println(map.size());//輸出2
System.out.println(map.get("liguocheng").name); //輸出libin
System.out.println(map.containsKey("liguocheng"));//true
System.out.println(map.containsKey("zhangaoqi"));//false
System.out.println(map.containsValue(s));//true
System.out.println(map.isEmpty());//false 判斷是否爲空
//轉換成容器類型
//values:將所有value值拿出來放到一個集合中
//比如放到一個list中,這是就不需要再用Key來取值,用腳標就可以了
List<Student> list = new ArrayList<>();
list.addAll(map.values());
System.out.println(list.get(0));
System.out.println("---------------------");
map.put("zhangaoqi",new Student("zaq",20));
map.replace("zhangaoqi",new Student("zhangaoqi",19));//替換,與put類似(key值一樣就可以替換)
}
}
Map的兩種遍歷方式
//縱切式遍歷
Set<String> keys = map.keySet();
for(String item : keys) {
System.out.println(item + ": " +map.get(item).name);
}
//橫切遍歷
Set<Map.Entry<String,Student>> entries = map.entrySet();
for(Map.Entry<String,Student> item : entries) {
System.out.println(item.getKey() + ": " +item.getValue().name);
}
map不能用iterator遍歷,當然也就不能用foreach遍歷