gpt4 book ai didi

java - 自动递增数组java

转载 作者:行者123 更新时间:2023-12-02 04:59:35 27 4
gpt4 key购买 nike

你好,我已经得到了这个基本上完全工作的排序 vector ,但是这里的问题是我只能在插入任何值之前将数组初始化为固定大小,所以例如我可以初始化 5 个,但如果我想插入 6 个项目它给了我一个空指针异常。我想我确实明白发生了什么,但是我希望任何人向我展示一个解决方案,如何在每次我想插入某些内容时自动增加数组大小。(无需使用任何内置的 java 功能,如 ArrayList )

谢谢

<小时/>
package ads2;

public class SortedVector2
{
private int length;
private int maximum;
private int growby;
private int temp;
private int x = 0;
private int high;
private int middle;
private int low;


String[] data;

public SortedVector2()
{

length = 0;

maximum = 5;
data = new String[maximum];


}

public void AddItem(String value)
{

/*if (length == maximum)
{
maximum += 200000;
*/

data[length] = value;

length++;
// SetSorted();
// SetSorted(data);

}

public void SetSorted()
{

for (int j = 0; j < data.length - 1; j++) {
if (data[j].compareTo(data[j + 1]) > -1) {
String temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}

}
for (String s : data) {
System.out.println(s);
}

// private String[] data;

/*
for(int i = data.length-1; i >= 0; i--) {
for(int j = 0; j < i; j++) {
if(data[j].compareTo(data[j + 1]) > -1) {
String temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
} for (String s : data) {
System.out.println(s);
}
*/
}

public void SetGrowBy(int growby)
{
maximum += growby;
}


public int GetCapacity()
{
return maximum;
}


public int GetNoOfItems()
{
return length;
}


public String GetItemByIndex(int index)
{
return data[index];
}

public int FindItem(String search)
{

for (x=0;x<=length; )
{
middle =((low + high)/2);
if (data[middle].compareTo(search)==0)
{
return middle;
}
else if (data[middle].compareTo(search)<0)
{

low = middle;
x++;
return FindItem(search);
}
else
{

high = middle;
x++;
return FindItem(search);
}
}
return -1;
}

public boolean Exists(String search)
{
boolean output;

int y;
y = 0;

while (data[y] != search && (length - 1) > y)
{
++y;
}

if (data[y] == search)
{
output = true;
} else
{
output = false;
}

y = 0;

return output;

}

public void InsertItem(int index, String value)
{
if (length == maximum)
{

maximum += 200000;

}

for(int i = length - 1; i >= index; --i)
{

data[i + 1] = data[i];

}

data[index] = value;

length++;
}


public void DeleteItem(int index)
{
for(int x = index; x < length - 2; ++x)
{

data[x] = data[x + 1];

}

length--;
}

public String toString()
{
String res = "";


for (int i=0; i<length; i++)
res+=data[i] + "; ";

return res;
}

}

最佳答案

你必须做 ArrayList 的实现者所做的事情。当您尝试在数组已满时添加元素时,您会创建一个更大的数组,将现有元素复制到其中并添加新元素。

关于java - 自动递增数组java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28409908/

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