汇总缺失和插入索引有效地索引



我有一种用于更新UI的类型。这是它的伪代码。

{
  Item[] AllItems;
  long[] ItemsRemovedFromPreviousUpdateByIndex;
  long[] ItemsAddedToPreviousUpdateByIndex;
}

这些更新非常频繁,并且包含大量数据。我们想汇总这些实例,并向UI提供每200ms的一次更新。每个200ms窗口可能有20或30个更新。

我的问题是是否有一个很好的方法来汇总这些索引。我想不出可以在不分配大量内存的情况下做到这一点。

我会尝试将该数据存储在一对int s, long s或 BigInteger s中,具体取决于您有多少个索引。

首先考虑这样做:

boolean[] added = new boolean[allItems.length];
boolean[] removed = new boolean[allItems.length];

仅当未添加/删除相应索引的项目时,布尔值是TRUE的。

但是,我不再这样做,而是试图将布尔数组表示为长期,或者在需要时,是一个biginteger。因为,tttffftfftf-> 1110010010-> 914。

您可以查看将单个位从0转移到1的方法,如果已经是1,则不用它。在您的初始情况下,您需要聪明,因为您从所有0(是0(开始的,并且第一个索引可能很大,因此您需要一步一步地从010...0,这是只是1 << n。如果您需要在j > n上翻转n的位置,则您只是从那里翻转单位,甚至可能会移动。

请记住,您将始终需要知道每个重置处的allItems数组的长度,因为000010011001相同,因此,如果长度为8,则应将1001解释为00001001

<</p>

最新更新