gpt4 book ai didi

java - 加快 HashMap 写入速度

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

我有一个由固定数量的键组成的 HashMap ,这些键是预防性填充的。现在,在一个循环中,我必须检查每个键以替换该值,以防必须更改它。

遗憾的是,由于所需的迭代次数,它的速度相当慢。我真的很想维护一个键值结构,因为它在我的模块的顶部和末尾使用,但我想至少提高性能。

我还考虑过使用 arrayList 来缩短插入时间,但在这种情况下,搜索会变慢,并且会失去键值功能。如果我在开头对数组列表的键进行排序,然后使用二分搜索查找值会怎样?

是否有更好的解决方案来搜索和在 map 上书写?

谢谢

编辑:代码

  for (Entry<String, VariableInfo> entry : VariablesMap.entrySet()){

String varName = entry.getKey();
VariableInfo info = entry.getValue();

Object value = info.convertToValue();

DialogWait dialogWindow = new DialogWait();
SwingWorker<Void, Void> swingWorker = new SwingWorker<Void, Void>() {

@Override
protected Void doInBackground() throws Exception {

while(newTimeSet != _record.getCurrentTimeMs()) {

_record.stepForward();

if(valuesMap.get(varName)!=value)
valuesMap.put(varName, value);
}
dialogWindow.close();
return null;
}
};

swingWorker.execute();
dialogWindow.makeWait("Loading");
}

最佳答案

Now, in a loop I have to check each key to replace the value in case it must be changed.

如果值必须更改的条件成立,是否有办法更新列表?所以基本上,您可以在 map 之外重写代码,以对更改使用react,而不是根据状态定期更改 map 吗?这通常是对性能的一个相当大的改进,并且将使您的 map 更加有用,因为它是最新的。

如果您确实必须定期检查 Map 中的每个条目,那么通过使用 map.entrySet() 并对其进行迭代,您的运行时间为 O(n) 。假设您无法预测有关输入映射的信息,则无法对其进行优化。

如果您有某些条目以更高的频率或概率发生变化,您可以通过在其中应用比其他条目更高的检查频率来进行优化。为此,您可以使用LinkedHashMap。有了它,您可以插入元素,并且列表会跟踪插入顺序。有了它,您可以轻松记住最后 n 个更改的元素,并优先考虑它们。

关于java - 加快 HashMap 写入速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56733308/

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