Подтвердить что ты не робот

Эквивалентно push() или pop() для массивов?

Я пытаюсь добавить, удалить и ссылаться на элементы из массива, который я создаю в главном java файле, но мне трудно понять правильный синтаксис. В actionscript у них есть push() и pop() для добавления и удаления элементов в массиве, есть ли эквивалент в android?

4b9b3361

Ответ 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"]