【问题标题】: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 个位置。您已经复制了两次数组。

      说你不能创建一个新数组是误导/错误的。你必须。 “双倍规模”的“通用策略”指令需要它。

      【讨论】:

        猜你喜欢
        • 2021-11-26
        • 2017-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-12
        • 1970-01-01
        相关资源
        最近更新 更多