我正在尝试学习如何将数据动态添加到列表中,但是我遇到了问题。 为什么每次尝试添加索引的值位置时,我都会得到错误的0值索引。
import java.util.*;
public class MyList{
String[] mList = null;
int pointer;
public MyList(){
mList = new String[pointer];
}
public void add(String aStringValue){
System.out.println("add: "+pointer+ " " +aStringValue+ " "+mList.length);
if (pointer < mList.length-1) {
System.out.println(pointer+ " " +aStringValue);
mList[pointer] = aStringValue;
pointer++;
}else{
System.out.println("New List:");
String[] lStringList = new String[mList.length + 20];
System.arraycopy(mList, 0, lStringList, 0, mList.length);
mList = lStringList;
System.out.println("New List: "+mList.length);
}
}
public int size(){
int size = 0;
for (int i = 0;i<mList.length;i++) {
if (mList[i] == null) {
return size;
}else{
size++;
}
}
return size;
}
public String get(int index){
return mList[index];
}
}
public class ListSize{
public static void main(String[] args){
MyList lList = new MyList();
lList.add("Amit");
lList.add("Deepak");
lList.add("Vishal");
lList.add("hello");
lList.add("abc");
lList.add("rahul");
lList.add("ajit");
lList.add("durgesh");
lList.add("a");
lList.add("b");
lList.add("c");
lList.add("d");
lList.add("e");
System.out.println("MyList is: "+lList.size());
for (int i = 0; i<lList.size(); i++) {
System.out.println(lList.get(i));
}
}
}
我希望Amit Deepak的输出,但实际输出是Deepak vishal
答案 0 :(得分:0)
创建新数组时,不添加任何内容。我建议您始终检查大小是否正常,然后再添加元素。如果您想清楚地看到这一点,建议您逐步调试程序中的代码。
public void add(String aStringValue) {
// ensure capacity.
if (pointer == mList.length)
mList = Arrays.copyOf(mList, mList.length + 20);
mList[pointer++] = aStringValue;
}
答案 1 :(得分:0)
在您的add
方法中,如果数组没有足够的空间容纳要添加的字符串,则您将创建一个更大的新数组,而不是将字符串添加到新数组中。
我相信if
语句的if
部分中的代码应该放在if
语句之后。