【问题标题】:Increasing Array Index without using Arraylist or Copying Elements over to another Array在不使用 Arraylist 或将元素复制到另一个数组的情况下增加数组索引
【发布时间】:2017-12-10 06:15:47
【问题描述】:
我有一个需要增加数组索引大小的类任务。
该指令提到 not 创建一个新数组并复制元素,称其效率很低。相反,他们建议以下
“一种更常见的策略是为数组选择一个初始大小并添加元素直到它满,然后将它的大小加倍并继续添加元素直到它满,等等。”
我很难理解这一点。我将如何完成这项工作?
【问题讨论】:
标签:
java
arrays
indexing
element
【解决方案1】:
如果您将当前数组的lenght 相乘,您可以将数组的大小加倍,如下所示:
array = Arrays.copyOf(array, array.lenght*2);
【解决方案2】:
您必须创建一个新数组,或者您可以执行以下操作:
int a[] = new a[10];
a = Arrays.copyOf(a, a.length + arrayGrowNumber);
在上面的示例中,您只是将现有数组复制到使用大数组定义的新数组中。
欲了解更多信息,请访问link.
【解决方案3】:
数组的初始大小并添加元素直到它满了,然后
将它的大小加倍并继续添加元素直到它满了,所以
开。
这句话清楚地表明使用java ArrayList,因为该策略用于ArrayList。
这就是它的声明方式。
List<Your_DataType> lst=new ArrayList<>();
例如
List<Integer> lst=new ArrayList<>();
lst.add(1);
lst.add(2);
lst.add(3);
lst.get(0);// shows 1 which is at 0th location
lst.get(1);// shows 2 which is at 0th location
lst.get(2);// shows 3 which is at 0th location
【解决方案4】:
您的说明有冲突。 “通用策略”指令仍将“创建一个新数组并复制元素”,但不会那么频繁。
假设您创建大小为 20 的数组,然后开始添加总共 50 个值。
添加前 20 个后,创建一个大小为 40 的新数组并复制值,然后继续添加到新数组中。
再添加 20 个(总共 40 个)后,创建一个大小为 80 的新数组并复制值,然后继续添加到这个新数组。
当您添加了所有 50 个值后,您将拥有一个大小为 80 的数组,其中值位于前 50 个位置。您已经复制了两次数组。
说你不能创建一个新数组是误导/错误的。你必须。 “双倍规模”的“通用策略”指令需要它。