gpt4 book ai didi

java - 在不使用集合的情况下在java中创建动态数组

转载 作者:搜寻专家 更新时间:2023-11-01 02:36:40 24 4
gpt4 key购买 nike

我在面试中被问到:“如何在不使用 ArrayList、vector 等任何集合的情况下创建动态数组。”

我说不可能,因为数组是固定大小的。他们说不,您可能需要编写一个程序来回答这个问题。

我无法回答这个问题。他们给了我一个提示“使用泛型”,尽管我似乎很难回答这个问题。谁能帮帮我?

最佳答案

Collections 的实现使用了类似的概念。您需要定义一个通用数组,其默认大小为 n = 10(例如),默认负载因子 =0.75(例如)

T[] array = (T[])new Object[DEFAULT_SIZE];

还有一个变量index将当前位置存储在数组中。

index > n*load_factor创建更大的新数组并将所有元素复制到其中,这将是您的新数组,与删除元素时类似 index < n*load_factor (这些标准取决于许多参数,这只是示例)减小数组的大小。

部分示例代码

public class CustomArrayList <T> {
private int index = 0;
private final int DEFAULT_SIZE = 10;
private final double DEFAULT_LOAD = 0.75;
private T[] array;

public CustomArrayList(){
array = (T[])new Object[DEFAULT_SIZE];
}

public void add(T elem){
if(index>=array.length*DEFAULT_LOAD){
array = Arrays.copyOf(array, array.length+10);
}
array[index++]=elem;
}
}

关于java - 在不使用集合的情况下在java中创建动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48356333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com