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());
}
}
}
运行: