gpt4 book ai didi

java - 根据 Map 内 TreeSet 中的值范围返回键

转载 作者:行者123 更新时间:2023-12-01 14:40:13 25 4
gpt4 key购买 nike

这是第一篇文章,我对 Java(以及一般编程)非常陌生!

我试图了解本地图包含其他集合时如何操作 map 。我正在尝试编写代码来将名称存储为针对映射中整数集的值的键。然后,我希望能够返回具有给定范围内的元素的任何值的键。

Map<String, Set<Integer>> index = new TreeMap<>();
Set<Integer> numbers = new TreeSet<>;

numbers.add(80);
numbers.add(90);
numbers.add(100);
index.put("Adam", numbers);

numbers = new TreeSet<>();
numbers.add(30);
numbers.add(40);
numbers.add(50);
index.put("Eve", numbers);

我现在有一个 map ,其中一个条目的键为“Adam”,值 [80, 90, 100],另一个条目的键为“Eve”,值 [30, 40, 50]。至少我认为我有!

我现在希望能够返回包含给定范围内的任何键值的名称。

例如,如果范围是 25 到 50,则返回将为“Eve”。如果范围是 50 到 85,则返回的结果将是“Adam”和“Eve”。

我认为 containsValue() 可能会起作用,但实际上不起作用(因为 Set?)。

任何指导将不胜感激。

最佳答案

在不改变你的设计的情况下,我能想到的唯一方法是迭代 map 和每个值集,但它不是很有效:

public Set<String> containsRange(Map<String, Set<Integer>> index, int lowerBound, int upperBound){
Set<String> result = new HashSet<>();
for (Map.Entry<String, Set<Integer>> entry : index.entrySet()) {
String string = entry.getKey();
for (Integer integer : entry.getValue()) {
if (integer >= lowerBound && integer <= upperBound) {
result.add(string);
break;
}
}
}
return result;
}

未经测试。

关于java - 根据 Map 内 TreeSet 中的值范围返回键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041435/

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