gpt4 book ai didi

java - 历史数组

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

我接到了一项需要“历史”数组引用的任务。
不确定这个名称是否正确。
这是一个视觉形式的快速概念。

[NC] == No change to array value

(v1) (v2) (v3) (v4) (Result)
[10] -> [13] -> [12] -> [13] = 13
[5] -> [NC] -> [54] -> [NC] = 54
[6] -> [3] -> [61] -> [30] = 30
[7] -> [3] -> [27] -> [3] = 3
[23] -> [NC] -> [NC] -> [NC] = 23
[41] -> [48] -> [4] -> [48] = 48
[12] -> [NC] -> [2] -> [NC] = 2

我需要能够从某个数组集中提取数据集,例如(伪代码):

int[] results1 = arraySet.get(v2);
System.out.println(results1[1]); // Prints 5

int[] results2 = arraySet.get(v4);
System.out.println(results2[1]); // Prints 54

我必须每秒存储大约 20 个数组集,回溯到过去 5 秒。
因此,内存中有 100 个数组集。

每个数组集将包含大约 200 个值;所以这会消耗相当大的内存。

我向您提出的问题:

是否已经有一个 Java 实现可以做到这一点,这将允许数组值链接回数组中的旧版本;或者我是否必须克隆整个数组并更改我需要更改的值? (加上内存不足)

最佳答案

您需要的数组总数是固定的,因此您可以预先分配它们。使用计数器指定当前数组并循环。

您无法避免使用此内存,但可以避免不断地重新分配新数组。有一些复杂的数据结构允许您保存“未更改”的内存,但对于这种情况,似乎只需将其全部保存在固定数量的现有数组中就足够了。

我总是将实际值保留在数组中,因此在更新期间您可以复制旧值并覆盖已更改的值。

如果您需要知道 current_array[i] 是否相对于 old_array[i] 发生了变化,您可以随时进行快速比较。

关于java - 历史数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669245/

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