我试图将一个新的Entry对象添加到一个对象数组中。我不知道如何写一个方法来做到这一点。此外,我还希望在添加新元素时增加数组的大小。
public class Entry {
private String surname, initial, extension;
public Entry() { }
public Entry(String surname, String initial, String extention) {
this.surname = surname;
this.initial = initial;
this.extension = extention;
}
}
我想编写方法在这里将elemets添加到数组中。新的Entry对象目前是硬编码的,但显然会有所改变。
public class ArrayDirectory implements Directory {
Entry[] entries = new Entry[4];
public void addEntry(Entry newEntry) {
newEntry = new Entry("isajas","ssds", "sasdas");
}
}
感谢您抽出宝贵时间阅读我的问题!
答案 0 :(得分:1)
以下是您完全按照自己的要求行事的方式:
public class ArrayDirectory implements Directory {
Entry[] entries = new Entry[1];
public void addEntry(Entry newEntry) {
Entry[] temp = new Entry[entries.length + 1];
for (int i = 0; i < entries.length; i++) {
temp[i] = entries[i];
}
newEntry = new Entry("isajas","ssds", "sasdas");
temp[temp.length - 1] = newEntry;
entries = temp;
}
}
但正如许多人所说,ArrayList(甚至是Vector)比尝试重新发明轮子更好。
答案 1 :(得分:1)
请考虑使用java.util.ArrayList。它是 List 接口&#34;&#34;可调整大小的数组实现。并提供了一个易于使用的API来添加对象,例如ArrayList<Type>().add(Object o)
。看看上面的Javadoc链接,它非常方便,而且我经常使用它。
它还为您节省了来回分配临时数组和创建额外对象的额外工作......
答案 2 :(得分:0)
您可以维护一个变量,该变量告诉您目录中存在的条目数。
每次添加/删除条目时,只需更新此变量即可。实际上,您正在实施Stack
。
public class ArrayDirectory implements Directory {
Entry[] entries = new Entry[4];
private int numEntries = 0;
public void addEntry(Entry newEntry) {
if (numEntries == 4) { /* Display an error */ }
newEntry = new Entry("isajas","ssds", "sasdas");
entries[numEntries] = newEntry;
numEntries++;
}
}
或者您可以使用java的内置ArrayList数据结构来添加/删除条目。