map.getOrDefault("one", "s");
map.forEach(new BiConsumer<String, String>() {
@Override
public void accept(String key, String value) {
System.out.println(key + ", " + value);
}
});
类似
if (map.containsKey(key)) {
return map.put(key, newValue);
} else {
return null;
}
如果key和oldValue都匹配,则替换成newValue。类似:
if (map.containsKey(key) && Objects.equals(map.get(key), oldValue)) {
map.put(key, newValue);
return true;
} else {
return false;
}
替换Map中所有Entry的value值,这个值由旧的key和value计算得出
map.replaceAll(new BiFunction<String, String, String>() {
@Override
public String apply(String key, String value) {
if (key.equals("two")) {
return value + ".old";
}
return value;
}
});
类似如下代码:
for (Entry entry : map.entrySet()) {
entry.setValue(function.apply(entry.getKey(), entry.getValue()));
}
如果key不存在,则put,并返回null。如果key存在,则什么也不做,返回key对应的value
map.putIfAbsent("four", "charge");
map.remove(key, value);
类似:
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.remove(key);
return true;
} else {
return false;
}
String s = map.computeIfAbsent("four", new Function<String, String>() {
@Override
public String apply(String key) {
return key + "@";
}
});
类似
if (map.get(key) == null) {
V newValue = function.apply(key);
if (newValue != null) {
map.put(key, newValue);
return newValue;
}
} else {
return map.get(key);
}
map.computeIfPresent("one", new BiFunction<String, String, String>() {
@Override
public String apply(String key, String value) {
return null;
}
});
类似:
if (map.get(key) != null) {
V oldValue = map.get(key);
V newValue = function.apply(key, oldValue);
if (newValue != null) {
map.put(key, newValue);
} else {
map.remove(key);
}
return newValue;
} else {
return null;
}
map.compute(key, new BiFunction<String, String, String>() {
@Override
public String apply(String key, String value) {
return key + "@" + value;
}
});
类似:
V oldValue = map.get(key);
V newValue = function.apply(key, value);
if (oldValue != null) {
if (newValue != null) {
map.put(key, newValue);
} else {
map.remove(key);
}
} else {
if (newValue != null) {
map.put(key, newValue);
}
}
return newValue;
apply中第一个参数是oldValue,第二个参数是merge传入的第二个参数
map.merge(key, value, new BiFunction<String, String, String>() {
@Override
public String apply(String oldValue, String value) {
return oldValue + "@" + value;
}
});
类似:
if (value == null) {
throw new NullPointerException();
}
V oldValue = map.get(key);
V newValue = (oldValue == null) ? value : function.apply(oldValue, value);
if (newValue == null) {
map.remove(key);
} else {
map.put(key, newValue);
return newValue;
}