В простейшей форме, которая читается, вам могут соответствовать следующие:
static void addToMapIfKeyExists(String k, String v) {
if (v != null && map.containsKey(k)) { // if key exists and value is not null
map.put(k, v); // Put in the map
} else { // else throw exception
throw new IllegalArgumentException("Else throwing exception.");
}
}
Отказ от ответственности : Решите, прежде чем выбрать это. Я бы НЕ рекомендовал это как практику, основанную на задействованных API.
static void addToMapIfKeyExistsOneLiner(String k, String v) {
map.put(k, Optional.ofNullable(v)
.filter(ignore -> map.containsKey(k))
.orElseThrow(IllegalArgumentException::new));
}
, и я мог бы сравнить поведение обоих этих методов одинаково, используя следующие тесты:
static Map<String, String> map = new HashMap<>();
private static void comparativeTest() {
map.put("a", "trying");
map.put("b", "crying");
addToMapIfKeyExists("a", "works");
System.out.println(map.get("a").equals("works"));
addToMapIfKeyExistsOneLiner("a", "works");
System.out.println(map.get("a").equals("works"));
addToMapIfKeyExists("b", null); // null value throw exception
addToMapIfKeyExists("e", "new key throws exception");
addToMapIfKeyExistsOneLiner("b", null); // null value throw exception
addToMapIfKeyExistsOneLiner("e", "new key throws exception");
}