Добавление элемента в следующее свободное место в массиве - PullRequest
0 голосов
/ 01 февраля 2012

у меня есть массив

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 ]

3 голосов
/ 01 февраля 2012

Самая большая проблема заключается в том, что массивы в 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 голос
/ 01 февраля 2012

Вы не можете изменить размер эмулируемого массива в GWT (даже если массивы javascript поддерживают этот материал).Вам всегда нужно будет создавать новый экземпляр массива.Наиболее распространенным способом решения этой проблемы является использование одного из классов коллекции (например, java.util.ArrayList).Пример:

ArrayList<String> path = new ArrayList<String>(Arrays.asList("abc","bbc"));
path.add("qsd");
1 голос
/ 01 февраля 2012

Вы должны использовать ArrayList

В противном случае вам придется изменить размер массива, выделив новую память размером исходного массива +1, скопировать элементы из старого в новый и добавитьв новом элементе.

...