gpt4 book ai didi

java - 如何在TreeMap中使用部分键搜索值

转载 作者:行者123 更新时间:2023-11-30 05:35:36 28 4
gpt4 key购买 nike

我需要使用部分键在 TreeMap 中搜索值

我尝试使用 HashMap 但失败了

TreeMap<String, BigDecimal> mapYr1 = new TreeMap<String, BigDecimal>();

mapYr1.put("abcdef",100.00);

是否可以使用如下所示的内容检索 100.00 的值?

mapYr1.get("abcd");

这里我只知道“abcd”。我不确定 key 的“ef”部分。

最佳答案

不直接,但您可以查看条目并搜索它:

public static BigDecimal findPartialKey(Map<String, BigDecimal> map, String search) {
return map.entrySet()
.stream()
.filter(e -> e.getKey().startsWith(search))
.map(Map.Entry::getValue)
.findFirst()
.orElse(null);
}

请注意,使用这样的流虽然(可能)很优雅,但没有利用 TreeMap 中的键已排序的事实,并且可能会浪费时间寻找匹配的键在一个无法容纳它的地区。使用好的老式循环可能有点笨拙,但在一般情况下,应该表现得更好一些:

public static BigDecimalfindPartialKey(SortedMap<String, BigDecimal> map, String search) {
Iterator<Map.Entry<String, Double>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Double> entry = iter.next();
String key = entry.getKey();
if (key.startsWith(search)) {
return entry.getValue();
}
if (key.compareTo(search) > 0) {
return null;
}
}
return null;
}

关于java - 如何在TreeMap中使用部分键搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56703802/

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