Java中map是存儲鍵和值的映射關係
添加鍵值測試
方法原型:V put(K key, V value)
public class MapDemo {
public static void main(String args[]) {
Map<String,String> map1 = new HashMap<>();
map1.put("學生1", "23歲");
map1.put("學生2", "20歲");
map1.put("學生3", "28歲");
System.out.println(map1);
}
}
運行:
輸出的順序不是我們存的順序,因爲用的HashMap創建的map對象,底層用哈希算法實現。將HashMap改爲LinkedHashMap即可按存的順序輸出。這個暫時不關注,我們來看put方法的返回值,它可不是返回傳入的value,而是返回剛傳入鍵值所覆蓋掉的value。
我們試試接收下put方法的返回值
public class MapDemo {
public static void main(String args[]) {
Map<String,String> map1 = new HashMap<>();
String str = map1.put("學生1", "23歲");
String str2 =map1.put("學生2", "20歲");
String str3 =map1.put("學生3", "28歲");
System.out.println(str);
System.out.println(str2);
System.out.println(str3);
}
}
運行:
返回null,因爲被覆蓋的是null,如果map1中已有”學生1”鍵和值,再用put放入”學生1”鍵和新值呢?
public class MapDemo {
public static void main(String args[]) {
Map<String,String> map1 = new HashMap<>();
map1.put("學生1", "100歲");
String str = map1.put("學生1", "23歲");
String str2 =map1.put("學生2", "20歲");
String str3 =map1.put("學生3", "28歲");
System.out.println(str);
System.out.println(str2);
System.out.println(str3);
}
}
可見的確覆蓋的值被返回了。
根據鍵移除元素測試
方法原型:V remove(Object key)
public class MapDemo {
public static void main(String args[]) {
Map<String,String> map1 = new HashMap<>();
map1.put("學生1", "23歲");
map1.put("學生2", "20歲");
map1.put("學生3", "28歲");
String str = map1.remove("學生3");
System.out.println(map1+" "+ str);
}
}
運行:
返回了被移除元素裏的值。
得到所有映射,遍歷Map。
方法原型:Set<Map.Entry<K,V>> entrySet()
Map.Entry是Map接口的內部接口。entrySet()方法是將映射關係裏的鍵與值看作一個整體,即Entry對象,然後將所有Entry對象存入Set裏
public class MapDemo {
public static void main(String args[]) {
Map<String,String> map1 = new HashMap<>();
map1.put("學生1", "23歲");
map1.put("學生2", "20歲");
map1.put("學生3", "28歲");
Set<Map.Entry<String,String>> mapEntry = map1.entrySet();
for(Map.Entry<String,String> temp: mapEntry) {
System.out.println(temp.getKey()+"-"+temp.getValue());
}
}
}
運行: