Я пытаюсь добавить, удалить и ссылаться на элементы из массива, который я создаю в главном java файле, но мне трудно понять правильный синтаксис. В actionscript у них есть push() и pop() для добавления и удаления элементов в массиве, есть ли эквивалент в android?
Эквивалентно push() или pop() для массивов?
Ответ 1
Использовать список массивов http://developer.android.com/reference/java/util/ArrayList.html
Ответ 2
В Java массив имеет фиксированный размер (после инициализации), что означает, что вы не можете добавлять или удалять элементы из массива.
int[] i = new int[10];
Вышеприведенный фрагмент означает, что массив целых чисел имеет длину 10. Невозможно добавить одиннадцатое целое число без переопределения ссылки на новый массив, например:
int[] i = new int[11];
В Java пакет java.util содержит все виды структур данных, которые могут обрабатывать добавление и удаление элементов из массивоподобных коллекций. В классической структуре данных Stack есть методы для push и pop.
Ответ 3
Для тех, у кого нет времени для реорганизации кода для замены массивов с помощью Collection
(например, ArrayList
), существует альтернатива. В отличие от Collection
s, длина массива не может быть изменена, но массив можно заменить следующим образом:
array = push(array, item);
Недостатки в том, что
- весь массив нужно копировать каждый раз, когда вы нажимаете, и
- исходный массив
Object
не изменяется, поэтому вам необходимо обновить переменную по мере необходимости.
Ниже приведен метод push
для String
:
(Вы можете создать несколько методов push
, один для String
, один для int
и т.д.)
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
for (int i = 0; i < array.length; i++)
longer[i] = array[i];
longer[array.length] = push;
return longer;
}
Эта альтернатива более эффективна, короче и труднее читать:
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
System.arraycopy(array, 0, longer, 0, array.length);
longer[array.length] = push;
return longer;
}
Ответ 4
Вы можете использовать LinkedList. У этого есть методы peek, опрос и предложение.
Ответ 5
Underscore-java библиотека содержит методы push (значения), pop(), shift() и unshift (значения).
Пример кода:
import com.github.underscore.lodash.$:
List<String> strings = Arrays.asList("one", "two", " three");
List<String> newStrings = $.push(strings, "four", "five");
// ["one", " two", "three", " four", "five"]
String newPopString = $.pop(strings).fst();
// " three"
String newShiftString = $.shift(strings).fst();
// "one"
List<String> newUnshiftStrings = $.unshift(strings, "four", "five");
// ["four", " five", "one", " two", "three"]