方法列表
- default V putIfAbsent(K key, V value)
若是指定的 key 存在,若 key 的值不为 null,该方法不作任何操做,若 key 的值为 null,将指定的 value 关联给 key 并保存到当前集合;若指定的 key 不存在, 将指定的 value 关联给 key 并保存到当前集合
- default V getOrDefault(Object key, V defaultValue)
若是指定的 key 存在(无论值是否为 null),该方法不作任何操做;若 key 不存在,将指定的 value 关联给 key 并保存到当前集合
- default V compute(K key, BiFunction<!--? super K-->, ? super V, ? extends V remappingFunction)
将 remappingFunction 的计算结果的 value 关联到指定的 key;若指定的 key 不存在于当前集合,会在当前集合中建立 key 以及 key 对应的 value
- default computeIfAbsent(K key, Function<!--? super K, ? extends V--> mappingFunction)
当 key 为 null 或 key 所对应的 value 为 null 时,执行该方法,将 mappingFunction 的计算结果的 value 关联到指定的 key;若指定的 key不存在于当前集合,会在当前集合中建立 key 以及 key 所对应的 value
- default computeIfPersent(K key, BiFunction<!--? super K, ? super V, ? extends V--> remappingFunction)
当 key 不为 null 而且 key 所对应的 value 不为 null 时,执行该方法,将 remappingFunction 的计算结果的 value 关联到指定的 key;若指定的 key 不存在于当前集合,不会建立 key
- default V merge(K key, V value, BiFunction<!--? super V, ? super v, ? extends V--> remappingFunction)
若是指定的 key 不存在或 key 的值为 null,将指定的 value 设置为 key 的值;不然根据 key 的旧的值 oldValue,value 计算出新的值 newValue,若是 newValue 为 null,则删除该 key,不然设置 key 的值为 newValue
-default boolean remove(Object key, Object value)
若是 key 的值与指定的值 value 相等(equals),则从当前集合中移除这个 key
- default V replace(K key, V value)
若 key 存在,将 key 的旧值替换成指定的 value;若 key 不存在,不会将指定的 key,value 保存到当前集合
- default boolean replace(K key, V oldValue, V newValue)
若 key 存在,key 关联的旧值与指定的 oldValue 相等,将 key 关联的旧值替换为指定的 newValue
- default void replaceAll(BiFunction<!--? super K, ? super V, ? extends V function)
将 function 的返回值 用来替换当前集合中的全部 key 的值
方法示例
- default V putIfAbsent(K key, V value)
public class App
{
public static void main( String[] args )
{
Map<String,Object--> hashMap = new HashMap<>();
hashMap.put("name",null);
hashMap.put("country","china");
// putIfAbsent 方法将值为 null 的键 name 赋值为 mike,并返回键 name 的旧值 null
System.out.println("putIfAbsent('name', 'mike')的返回值:" + hashMap.putIfAbsent("name", "mike"));
// putIfAbsent 方法不改变键为 country 的值,由于键 country 的值为 china(不为 null),并返回旧值 china
System.out.println("putIfAbsent('country', 'japan')的返回值:" + hashMap.putIfAbsent("country", "japan"));
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:putIfAbsent('name', 'mike')的返回值:null
~~out:putIfAbsent('country', 'japan')的返回值:china
~~out:country:china
~~out:name:mike
- default V getOrDefault(Object key, Object value)
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name",null);
// 若键 name 不存在, getOrDefault 将指定的值 tom 关联给键 name,并保存到 hashMap中;
// 若键 name 存在(无论值是否为 null);getOrDefault 将不作任何操做
hashMap.getOrDefault("name", "tom");
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:name:null
- default V compute(K key, BiFunction<!--? super K-->, ? super V, ? extends V) remappingFunction
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name","tom");
// compute 方法将键 name 的值赋为 函数式接口 BiFunction 的实现类方法 apply 的返回结果;若 apply 的返回结果为 null ,键 name 将会被从 hashMap 中移除;若 hashMap 中没有键 name,compute 会将指定的 key 和它对应计算的 value 存入 hashMap中
hashMap.compute("name", new BiFunction<string, object, object>() {
@Override
public Object apply(String s, Object o) {
return o;
}
});
// lambda 写法
hashMap.compute("name",(k,v) -> "tom");
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:name:tom
- default computeIfAbsent(K key, Function<!--? super K, ? extends V--> mappingFunction)
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name",null);
// 键 name 的值为 null ,符合执行 computeIfAbsent 方法的执行条件,将 apply 方法返回的值 jerry 关联给指定的键 name;
// 若键 name 的值不为 null;不符合执行 computeIfAbsent 方法的执行条件,所以 apply 方法的返回值不会影响键 name 对应的值 value
hashMap.computeIfAbsent("name", new Function<string, object>() {
@Override
public Object apply(String s) {
return "jerry";
}
});
// lambda 写法
//hashMap.computeIfAbsent("name", k -> "jerry");
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:name:jerry
- default computeIfPersent(K key, BiFunction<!--? super K, ? super V, ? extends V--> remappingFunction)
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name","tom");
// 键 name 的值为 tom,符合 computeIfPresent 方法的执行条件,将 apply 方法的返回值 mike 关联给指定的键 name
// 若键 name 不存在于 hashMap 中,apply 方法不会将 name-mike 存入当前 hashMap
// 若键 name 对应的值为 null,不会将 apply 的返回值 mike 关联给键 name
hashMap.computeIfPresent("name", new BiFunction<string, object,object>(){
@Override
public Object apply(String s, Object o) {
return "mike";
}
});
// lambda 写法
// hashMap.computeIfPresent("name", (k,v) -> "mike");
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:name:mike
- default V merge(K key, V value, BiFunction<!--? super V, ? super v, ? extends V--> remappingFunction)
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name","jerry");
// 键 name 的值不为 null,将 name 的值关联为 apply 方法计算出的新值 jerry->tom;
// 若键 name 不存在或者键 name 的值为 null,merge 方法指定的 value 关联给键 name,不执行 apply 方法;
// 若 name 存在且 name 的值不为 null,而 apply 方法返回的值为 null ,那么 hashMap 中的键 name 将被移除
hashMap.merge("name", "tom", new BiFunction<object,object, object>() {
@Override
// o 为旧值 jerry;o2 为给定的值 tom
public Object apply(Object o, Object o2) {
return (String)o + "->" + o2;
}
});
// lambda 写法
// hashMap.merge("name", "tom", (oldValue, newValue) -> oldValue + "->" + newValue);
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:jerry->tom
- default boolean remove(Object key, Object value)
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name","jerry");
hashMap.put("country", "china");
// remove 方法中指定的键 name 的值 jerry 与当前 hashMap 中键 name 的值一致,所以键 name 从 hashMap 中被移除
hashMap.remove("name","jerry");
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:country:china
- default V replace(K key, V value)
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name",null);
// 若键 name 存在(无论值是否为 null),将键 name 的值 null 替换为 replace 方法指定的值 tom
// 若键 name 不存在,不会将 replace 指定的键 name 和值 tom 保存到当前 hashMap 中
hashMap.replace("name","tom");
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:name:tom
- default boolean replace(K key, V oldValue, V newValue)
public class App
{
public static void main( String[] args )
{
Map<string,object> hashMap = new HashMap<>();
hashMap.put("name",null);
// 若键 name 存在(无论键 name 的值是否为 null),若键 name 的旧值 null 与 replace 方法中指定的 oldValue 相等,将键 name 的旧值 null 替换为 replace 方法中指定的 newValue
hashMap.replace("name",null,"jerry");
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:name:jerry
- default void replaceAll(BiFunction<!--? super K, ? super V, ? extends V function)
public class App
{
public static void main( String[] args )
{
Map<String,Object--> hashMap = new HashMap<>();
hashMap.put("name",null);
hashMap.put("sex","man");
hashMap.put("country","china");
// 用 apply 方法的返回值将键 name 的值替换为 name->null,将键 sex 的值替换为 sex->man,将键 country 的值替换为 country->china
hashMap.replaceAll(new BiFunction<string, object, object>() {
@Override
// s:旧的 key;o:旧的 value
public Object apply(String s, Object o) {
return s + "->" + o;
}
});
// lambda 写法
// hashMap.replaceAll((k,v) -> k + "->" + v);
hashMap.forEach((k,v) -> System.out.println(k + ":" + v));
}
}
~~out:country:country->china
~~out:sex:sex->man
~~out:name:name->null
```</string,></string,object></string,object></string,object></object,object,></string,object></string,></string,object></string,></string,object></string,></string,object></string,object>