如何创建一个包含可选的哈希图,当检索时,它会给我值或optional.empty,但有限制



如何创建一个包含可选的哈希图,并且在检索时会给我值或optional.empty?但是,我不允许检查null、Optional.empty((或使用isPresent()isEmpty()get()

对于Optional<V> get.get()会给我null或Optional值,但我想要的是Optional.empty()或Optional,因为我稍后需要将这些Optional值链接在一起。

例如,.get("John").flatMap(x -> x.get("ModName")).flatMap(x -> x.get("TestName")).map(Assessment::getGrade)。如果";约翰;如果在第一个映射中不存在,那么.get("John")将给我一个null,如果我使用.flatMap(x -> x.get("ModName")),我将得到一个null指针异常。

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
class CustomMap<V> {
private final Map<String, Optional<V>> map;
public CustomMap() {
map = new HashMap<String, Optional<V>>();
}
public Optional<V> get(String key) {
return map.get(key);
}
public int size() {
return map.size();
}
public CustomMap<V> put(V item) {
map.put(item.getKey(), Optional.ofNullable(item));
return this;
}

您可以在get方法中编写一个检查,如下所示:

public Optional<V> get(String key) {
if (map.contains(key)) {
return map.get(key);
} else {
return Optional.empty();
}
}

最新更新