HashMap是Map接口的实现,它提供数据结构,以存储键值对中的数据。
- 声明HashMap.
Map myMap = new HashMap();
KeyType和Valueetype必须是Java中的有效类型,如字符串,整数,浮点或者员工,学生等的任何自定义类。
For Example : Map myMap = new HashMap();
- 将值放在hashmap中。
要在HashMap中放置值,我们必须通过将键和值作为参数来调用HashMap对象上的PROP方法。
myMap.put("key1", 1);
myMap.put("key2", 2);
如果使用地图中已存在的键调用PUT方法,则该方法将覆盖其值并返回旧值。
- 获取hashmap的值。
为了从HashMap获取值,我们必须通过将键作为参数传递给Get方法。
myMap.get("key1"); //return 1 (class Integer)
如果通过HashMap中不存在的密钥,则此方法将返回null。
- 检查键是否在地图中。
myMap.containsKey(varKey);
- 检查值是否在地图中。
myMap.containsValue(varValue);
上述方法将返回一个布尔值true或者false如果键,则在地图中存在值。
使用java 8的默认方法
在Map接口中使用Java 8中引入的默认方法的示例
- 使用getordefault.
返回映射到密钥的值,或者如果不存在密钥,则返回默认值
Map map = new HashMap<>(); map.put(1, "First element"); map.get(1); //=> First element map.get(2); //=> null map.getOrDefault(2, "Default element"); //=> Default element
- 使用foreach.
允许执行每个映射条目上的“action”中指定的操作
Map map = new HashMap();
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
map.forEach((key, value) -> System.out.println("Key: "+key+ " :: Value: "+value));
//Key: 1 :: Value: one
//Key: 2 :: Value: two
//Key: 3 :: Value: three
- 使用替换
只有在存在键时,才会替换为新值
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.replaceAll((key,value)->value+10); //{john=30, paul=40, peter=50}
- 使用Purifabsent.
如果密钥未存在或者映射到NULL,则将键值对添加到地图中
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.putIfAbsent("kelly", 50); //{john=20, paul=30, peter=40, kelly=50}
- 使用删除
仅当其与给定值相关联时才删除键
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.remove("peter",40); //{john=30, paul=40}
- 使用替换
如果存在键,则该值将被新值替换。
如果关键不存在,则不做。
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.replace("peter",50); //{john=20, paul=30, peter=50}
map.replace("jack",60); //{john=20, paul=30, peter=50}
- 使用computeifabsent.
此方法在地图中添加条目。
密钥在函数中指定,值是映射函数应用的结果
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.computeIfAbsent("kelly", k->map.get("john")+10); //{john=20, paul=30, peter=40, kelly=30}
map.computeIfAbsent("peter", k->map.get("john")+10); //{john=20, paul=30, peter=40, kelly=30}
//peter already present
- 使用computeifpresent.
此方法添加条目或者修改地图中的现有条目。
如果没有该键的条目不存在,则无效
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.computeIfPresent("kelly", (k,v)->v+10); //{john=20, paul=30, peter=40} //kelly not present
map.computeIfPresent("peter", (k,v)->v+10); //{john=20, paul=30, peter=50} //peter present, so
increase the value
- 使用compute.
此方法通过新计算的值替换键的值
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.compute("peter", (k,v)->v+50); //{john=20, paul=30, peter=90} //Increase the value
- 使用合并
将键值对添加到映射,如果未存在键或者键的值为null替换具有新计算值的值,如果键是当前键从地图中删除,如果计算出的新值是null
Map map = new HashMap();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
//如果键不存在或者键的值为null,则将键-值对添加到映射中
map.merge("kelly", 50 , (k,v)->map.get("john")+10); //{john=20, paul=30, peter=40, kelly=50}
//如果存在键,则用新计算的值替换该值
map.merge("peter", 50 , (k,v)->map.get("john")+10); //{john=20, paul=30, peter=30, kelly=50}
//如果计算的新值为空,则会从映射中删除键
map.merge("peter", 30 , (k,v)->map.get("nancy")); //{john=20, paul=30, kelly=50}
日期:2020-06-02 22:15:21 来源:oir作者:oir
