【问题标题】:Can someone please give an example for writing dynamic array without using ArrayList?有人可以举一个不使用 ArrayList 的情况下编写动态数组的例子吗?
【发布时间】:2023-04-02 02:52:01
【问题描述】:

我需要将元素动态添加到数组中。有人可以帮我吗?

int[] 数据 =new int[10];我怎样才能为动态条目制作这个数组?

我从 stackoverflow 本身获得了这些代码。我认为它可能有效..

**公共类 DynamicArrayOfInt

{

私有 int[] 数据;

public DynamicArrayOfInt() {

data = new int[1];

}

public int get(int 位置) {

if (position >= data.length)
    return 0;
else 
    return data[position];
}

public void put(int position, int value) {

if (position >= data.length)
{
    int newSize = 2 * data.length;
    if (position >= newSize)
        newSize = 2 * position;
    int[] newData = new int[newSize];  
    System.arraycopy(data, 0, newData, 0, data.length);  
    data = newData;  
    System.out.println("Size of dynamic array increased to " + newSize);  
}
data[position] = value;

} }**

//System.arraycopy(data, 0, newData, 0, data.length);谁能解释一下这些传递参数?

【问题讨论】:

  • 我只尝试了固定大小的数组。事情是我处于学习阶段..如果你有动态数组的代码请与我分享
  • 请添加代码!
  • @Dkkarnavar,使用ArrayList有什么问题?
  • @Dkkarnavar 逻辑很简单。如果数组已满,则创建一个更大的数组并将数组内容复制到其中,然后添加新元素。您可以使用循环复制内容,或使用System.arrayCopy
  • 我必须同意@Masud。 ArrayList 正是为您做到这一点。最重要的是,它具有有趣的实用功能,并且可能在引擎盖下进行了优化。除了学习示例之外,真的没有理由手动重新发明 ArrayList。

标签: java arrays core


【解决方案1】:

你可以考虑遵循简单的逻辑

        when array size is full   
        int b[]=Arrays.copyOf(data, data.length*2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2015-01-31
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多