Java Hashmap的用法

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