gpt4 book ai didi

Java:许多键映射之一

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:39 24 4
gpt4 key购买 nike

我得到一个Map,其中可能包含以下Keys之一

Map<String, String> map = getMap();

我现在想检查是否设置了某些键之一。我目前的方法是链接多个 map.getOrDefault(...)

Address address = new Address();
address.setStreet(map.getOrDefault("STORE_STREET"
, map.getOrDefault("OFFICE_STREET", ...));

或者检查每个键是否存在于 map 中。

if(map.containsKey("STORE_STREET")){
address.setStreet(map.get("STORE_STREET"));
}else if(map.containsKey("OFFICE_STREET")){
address.setStreet(map.get("OFFICE_STREET"));
}

有什么方法可以使它更容易/更好地阅读吗?不幸的是, map 是这样给出的。

最佳答案

通常情况下,getOrDefault 是可行的方法,但如果您有多个替代键,这不仅会影响可读性,还会使性能优势变为相反。使用如下代码:

address.setStreet(map.getOrDefault("STORE_STREET", map.getOrDefault("OFFICE_STREET", ...));

在查看主键(或具有更高优先级的键)是否存在之前,您首先要查找备用键以获取回退值。

一个解决方案是

Stream.of("STORE_STREET", "OFFICE_STREET", ...)
.map(map::get)
.filter(Objects::nonNull)
.findFirst()
.ifPresent(address::setStreet);

当执行一次时,由于较高的初始化开销,其性能可能不如简单循环,但是,性能差异将无关紧要。对于频繁执行,不会有太大的区别,所以你应该根据可读性来决定(当然这是主观的)。

关于Java:许多键映射之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com