キーの値に空文字があれば、例外スロー
Map<String, String> map = Map.of(
"username", "admin",
"password", "", // 空
"role", "editor"
);
map.entrySet().stream()
.filter(entry -> entry.getValue().isEmpty())
.findFirst()
.ifPresent(entry -> {
throw new IllegalArgumentException("Empty value found for key: " + entry.getKey());
});
キーの値にnull、または、空文字があれば、例外スロー
Map<String, String> map = Map.of(
"username", "admin",
"password", "", // 空
"role", "editor"
);
map.entrySet().stream()
.filter(entry -> entry.getValue() == null || entry.getValue().isEmpty())
.findFirst()
.ifPresent(entry -> {
throw new IllegalArgumentException("Empty value found for key: " + entry.getKey());
});
補足:複数のキーを収集したい場合
Map<String, String> map = Map.of(
"username", "", // 空
"password", "", // 空
"role", "editor"
);
List<String> invalidKeys = map.entrySet().stream()
.filter(entry -> entry.getValue() == null || entry.getValue().isEmpty())
.map(Map.Entry::getKey)
.collect(Collectors.toList());
if (!invalidKeys.isEmpty()) {
throw new IllegalArgumentException("Empty or null values found for keys: " + invalidKeys);
}
出力の一部
Caused by: java.lang.IllegalArgumentException: Empty or null values found for keys: [password, username]