gpt4 book ai didi

java - 存储和查找双数组

转载 作者:行者123 更新时间:2023-11-29 07:23:21 24 4
gpt4 key购买 nike

我有一个相当昂贵的数组计算 (SpectralResponse),我希望将其保持在最低限度。我认为最好的方法是存储它们并在将来再次需要相同阵列时将其备份。使用 BasicParameters 做出决定。

所以现在,我为 SpectralResponse 数组使用一个对象链表,为 BasicParameter 使用另一个链表。并且 BasicParameters 有一个 isParamsEqualTo(BasicParameters) 方法来比较参数集。

LinkedList<SpectralResponse> responses
LinkedList<BasicParameters> fitParams
LinkedList<Integer> responseNumbers

所以要查找,我只是浏览 BasicParameters 列表,检查是否匹配,如果匹配,则返回 SpectralResponse。如果没有匹配,则计算 SpectralResponse。

这是我用来查找的 for 循环。

size: LinkedList size, limited to a reasonable value
responseNumber: just another variable to distinguish the SpectralResponse.

for ( i = size-1; i > 0 ; i--) {
if (responseNumbers.get(i) == responseNum)
{
tempFit = fitParams.get(i);
if (tempFit.isParamsEqualTo(fit))
{
return responses.get(i);
}
}
}

但不知何故,这样做不仅会占用大量内存,而且实际上比直接计算 SpectralResponse 还要慢。慢得多。

所以是我的实现有问题,还是我误认为预计算和查找更快?

最佳答案

您正在通过索引访问 LinkedList,这是最糟糕的访问方式;)

您应该改用 ArrayList,或者对所有列表使用迭代器。

可能您应该将这三个对象合并为一个,并将它们保存在以 responseNum 为键的映射中。

希望这对您有所帮助!

关于java - 存储和查找双数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/358718/

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