gpt4 book ai didi

Java:通过 HashMap 以特殊顺序搜索值

转载 作者:行者123 更新时间:2023-12-02 03:44:51 25 4
gpt4 key购买 nike

我已经为我的问题找到了一个可行的解决方案,但对我来说代码似乎有点太多了,所以也许你有更好的主意:)我有一个 HashMap,其大小限制为 1000 个元素。当我想再放入1时,映射中相关整数最低的T应该被替换为新的。

我现在的代码是:

public boolean add(T element) {
if (set.containsKey(element)) {
return false;
} else if (set.size() == length) {
Integer searchedInteger = set.values().stream().sorted().findFirst().get();
T searchedElement = set.entrySet()
.stream()
.filter(x -> x.getValue().equals(searchedInteger))
.findFirst()
.get()
.getKey();
set.remove(searchedElement);
set.put(element, 0);
return true;
}
set.put(element, 0);
return true;
}

谢谢

最佳答案

您可以做的第一个改进是避免 sorted().findFirst()。在这种情况下,Stream 的大多数实现都会对所有元素进行排序,因此效率很低。最好使用 min 代替。

此外,无需对条目进行两次迭代。你可以这样做

Map.Entry<T, Integer> e = set.entrySet()
.stream()
.min(Map.Entry.comparingByValue())
.orElseThrow(IllegalStateException::new);
set.remove(e.getKey());

关于Java:通过 HashMap<T, Integer> 以特殊顺序搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36407725/

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