gpt4 book ai didi

java - 优化MapcomputeIfPresent方法的java代码

转载 作者:行者123 更新时间:2023-11-30 01:46:28 25 4
gpt4 key购买 nike

我有以下方法,其中我从实体中提取值,然后将其设置在映射中作为该映射的值,但我的观点是,对于每个键,我显式设置值,因此如果键增长,方法代码也会增长,我可以基于方法 Map.computeIfPresent 制作一个通用方法吗,请告知我如何实现这两件事

   private void setMap(AbcLoginDTO abcLoginDTO, Map<String, Object> getMap) {
getMap.put("XXNAME", abcLoginDTO.getUsername());
getMap.put("XX_ID", abcLoginDTO.getClientId());
getMap.put("RR_ID", abcLoginDTO.getUserId());
getMap.put("QQ_TIME", abcuserLoginDTO.getLocktime());
}

我正在考虑类似下面的方法

static <E> void setIfPresent(Map<String, Object> map, String key, Consumer<E> setter, Function<Object, E> mapper) {
Object value = map.get(key);
if (value != null) {
setter.accept(mapper.apply(value));
}
}

最佳答案

but my point is that for each key I am setting the value explicitly so if the count of keys grows that method code will also grow

您需要使用 DTO 中的不同值填充 Map,因此您没有其他选择。
该方法很长,因为您在 Map 中添加的键和从 DTO 检索的值之间没有映射。

您可以使用以下函数编写代码:

static void setValueInMap(Map<String, Object> map, String key, Supplier<Object> mapper) {
map.put(key, mapper.get());
}

并使用它:

Map<String, Object> map = ...;
AbcLoginDTO dto = ...;
setIfPresent(map, "keyUserName", dto::getUserName);
// and so for

但没有真正的优势。

您的第二个片段与第一个片段完全没有关系。

关于java - 优化MapcomputeIfPresent方法的java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57746751/

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