记java8和Map.merge的使用
* compute:根据key做匹配,key,value为参数,匹配到Node做value替换,匹配不到新增node。apply的返回值为null则删除该节点。
* merge:oldValue,newValue作为为参数,其它功能于compute类似
* computeIfAbsent:原来的值存在且不为null,不修改,返回原有的值
原来的值存在为null,新增的值不为null,修改并返回新的值
原来的值为存在null,新增的值为null,不修改返回Null
原来的值不存在,新增的值为null,不修改返回Null
原来的值不存在,新增的值不为null,修改返回新的值
总结:新增的为null时或原值不为null,不修改
原有值不存在或者为null,修改
* computeIfPresent: 原有值存在且不为null时才修改,BiFunction为null删除节点,否则修改
BiFunction接口的apply的入参为key、oldValue