Java中的有效数组扩展

厌食症

在C / C ++中,我们realloc可以有效地为现有集合分配额外的空间。我猜想它的复杂度是次线性的(甚至是常数)

有没有办法在Java中实现相同的目的?这是我看过的东西,

  1. 无法调整数组大小
  2. 将数组复制到另一个更大的数组的复杂度是线性的。在都显得System.arrayCopy以及Arrays.copyOf
  3. ArrayList 必须与上面的第2点相同。

注意:我的要求是将可能更大的阵列扩展到更大。

米克拉

realloc实际上,它很可能是O(n),因为它有时/经常涉及内存复制。从这个意义上讲,它在理论上的复杂性等同于在Java中分配新的数组。

现在,Java总是将新分配的内存归零,这可能会使它花费更长的时间,但是GC的OTOH具有疯狂的快速内存分配,因此它甚至可能比realloc某些情况下更快我希望有一种策略涉及到在Java中分配新数组的速度总体上可与媲美realloc可能Java适用于较小的数组,C / C ++可能适用于较大的数组,但是YMMV。您必须确定自己的特定实施和工作量是否达到基准。

因此总体而言:

  • 不用担心,只需在Java中重新分配新数组
  • 如果您经常这样做,请确保使用比您需要的空间更多的空间来重新创建数组,这样就不必在添加了每个元素的情况下进行重新分配(这是JavaArrayList内部执行的操作。

最后但很重要的一点:除非您正在编写非常低级的代码,否则您可能不应该为此担心。只需使用一个已经存在的高级集合类(Java集合,Google集合,Trove等),然后让它们为您处理所有这些事情即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

是否遍历Java 2D数组中的列与行一样有效?

来自分类Dev

从Numpy数组中删除列的有效方法?

来自分类Dev

有效的数组连接

来自分类Dev

从Numpy数组的索引中采样的有效方法?

来自分类Dev

在Java中以有效方式从数组返回重复项

来自分类Dev

在Java中哪个是更有效的整数数组大小

来自分类Dev

从numpy数组中删除None的有效方法

来自分类Dev

在php中返回数组是否有效?

来自分类Dev

如何有效地合并Java中的两个数组?

来自分类Dev

从Javascript中的数组值生成有效输出

来自分类Dev

在C ++中Bin排序数组的有效方法

来自分类Dev

从Java中的数组制作直方图的最有效方法

来自分类Dev

Java-在数组中搜索矩形(有效的方法)

来自分类Dev

更改有效负载中传递的Vuex数组

来自分类Dev

在Julia中求和整数数组的有效方法

来自分类Dev

在JavaScript中搜索数组映射的最有效方法

来自分类Dev

有效地查找数组中对象的索引

来自分类Dev

在Julia中扩展DataFrame的有效方法

来自分类Dev

有效避免计算中的大型中间数组?

来自分类Dev

更改有效负载中传递的Vuex数组

来自分类Dev

从Numpy数组中删除列的有效方法?

来自分类Dev

有效的模板扩展?

来自分类Dev

从Java中的数组制作直方图的最有效方法

来自分类Dev

有什么有效的方法可以确定布尔数组中是否有更多的N个连续的true?在Java中

来自分类Dev

在Java中存储仅0和1的数组的有效方法

来自分类Dev

在 Java 中修剪二维数组的有效方法

来自分类Dev

从数组数组中删除键值的有效方法

来自分类Dev

如何使用扩展语法有效地从关联数组中删除项目

来自分类Dev

声明数组时出错 >> int arr[]; 在 C++ 中(尽管在 Java 中有效)?

Related 相关文章

热门标签

归档