【发布时间】:2013-04-02 08:53:18
【问题描述】:
在重新发明任何可能已经发明了很多次的轮子之前,我正在寻找一个库,它可以让我处理潜在的巨大 char 数组(不是 Char),同时保持堆开销和不必要的堆分配很小。
这意味着数组实现应该允许
- 以collection.get(long index)访问元素
- 将元素存储为 collection.put(long index, char what) 并在必要时自动分配调整数组大小
- 通过我想选择的某个大小的恒定大小块重新调整数组的大小,例如2^14 个元素。
第 3 点对我的目的很重要:许多实现只是通过分配两倍于当前大小的东西来调整集合的大小,复制并丢弃旧的。如果集合变得非常大并且下一次调整大小操作将需要全部或更多内容,则这很糟糕,尽管堆上仍然可能有足够的空间。
此外,索引类型应该是长的,以便可以在数组中存储超过 2^(32-1) 个元素。
因此,如果我要实现它,我可能会使用可选择块大小的动态数组。第一级数组将以任何旧方式调整大小(它不会包含太多元素),而第二级数组将始终具有 2^N 的某个固定块大小。
是否有人知道执行此操作或类似内存效率的库?
【问题讨论】:
标签: java arrays collections primitive