将元素添加到数组中的下一个空闲空间

时间:2012-02-01 16:41:22

标签: java gwt gwt2

我有一个数组

String[] path={abc,bcd};

我在一个方法中传递了这个数组:

addElement(path);

方法

void addElement(String[] path)
{
    // here i got value suppose "qsd" and i want to add it after "bcd" ie 2 index of array
    path[path.lenght]="qsd"; 
}

但是这给了我一个错误。

我不想使用ArrayList。

3 个答案:

答案 0 :(得分:3)

最大的问题是Java中的数组不是简单的可调整大小。你最后做的是实际创建一个新数组,并将每个元素添加到其中。这将比ArrayList代码慢,而且更加丑陋。

这也意味着任何指向旧数组的代码都将不再起作用。如果您只有一个实例,则可以addElement返回新数组,如此

String[] addElement(String old[]){
    String arr[] = new String[old.length+1];
    //copy all the elements in old...
    arr[old.length] = "whatever";
    return arr;
}

然后使用

path = addElement(path);

答案 1 :(得分:1)

您应该使用ArrayList

否则,您必须通过分配原始数组+1大小的新内存来重新调整数组大小,将旧元素的元素复制到新元素中,然后添加新元素。

答案 2 :(得分:1)

你不能在GWT中改变模拟数组的大小(即使javascript数组支持这个东西)。您将始终创建一个新的数组实例。解决此问题的最常用方法是使用其中一个集合类(如java.util.ArrayList)。例如:

ArrayList<String> path = new ArrayList<String>(Arrays.asList("abc","bbc"));
path.add("qsd");