gpt4 book ai didi

java - 如何优雅地从 Map 中获取唯一元素

转载 作者:行者123 更新时间:2023-12-01 23:50:06 29 4
gpt4 key购买 nike

我有一个Map它将容纳一个且仅一个 Entry 。我肯定知道它,因为它保存执行如下查询的结果:

SELECT MAX(COLUMN) FROM SOMETABLE 

在最坏的情况下,它应该返回 null。现在我正在努力得到这个结果。我面临两种方法,但我认为应该有更好的解决方案。

我的测试代码:

HashMap<String, Object> result = new HashMap<String, Object>();
result.put("maxColumn", new Integer(1));

解决方案1:

Integer maxValue = (Integer) result.get(result.keySet().iterator().next());

解决方案2:

Integer maxValue = (Integer) result.values().toArray()[0];

有更好的方法吗?您认为哪一个更具声明性/更便宜?

编辑:我不允许使用任何其他数据结构,因为 Map<String, Object>是从我正在使用的持久性 API 返回的结果类型。

最佳答案

最简单、最干净的是选项 2,因为它直接获取值(不通过 get()):

Integer i = (Integer) result.values().toArray()[0];

但是有点丑,而且还有 Actor 阵容。我倾向于将其重构为整个团队都可以使用的类型化实用方法:

public class MapUtils {

public static <T> T getSingleValue(Map<String, Object> map) {
return (T) map.values().toArray()[0];
}
}

通过键入该方法,您可以避免代码中丑陋的转换,因为您将像这样使用它:

Integer maxValue = MapUtils.getSingleValue(result);

这里 java 可以使用类型推断来确定您所期望的。通过不进行强制转换,您可以更改 maxValue 的类型,并且代码仍然可以工作。对于强制转换,您必须更改类型强制转换以匹配。

关于java - 如何优雅地从 Map 中获取唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427560/

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