java howto ArrayList push, pop, shift и unshift - PullRequest
72 голосов
/ 10 декабря 2011

Я определил, что Java ArrayList.add похожа на JavaScript Array.push

Я застрял в поиске ArrayList функций, похожих на следующие

  • Array.pop
  • Array.shift
  • Array.unshift Я склоняюсь к ArrayList.remove[At]

Ответы [ 5 ]

120 голосов
/ 10 декабря 2011

ArrayList является уникальным в своих стандартах именования.Вот эквиваленты:

Array.push    -> ArrayList.add(Object o); // Append the list
Array.pop     -> ArrayList.remove(int index); // Remove list[index]
Array.shift   -> ArrayList.remove(0); // Remove first element
Array.unshift -> ArrayList.add(int index, Object o); // Prepend the list

Обратите внимание, что unshift не удаляет элемент, но вместо этого добавляет один к списку.Также обратите внимание, что в Java и JS поведение в разных случаях может быть разным, поскольку каждый из них имеет свои собственные стандарты.

24 голосов
/ 23 апреля 2013

Я столкнулся с этой проблемой некоторое время назад и обнаружил, что java.util.LinkedList лучше всего подходит для моего случая. У него есть несколько методов с разными именами, но они делают то, что нужно:

push()    -> LinkedList.addLast(); // Or just LinkedList.add();
pop()     -> LinkedList.pollLast();
shift()   -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();
14 голосов
/ 10 декабря 2011

может быть, вы хотите посмотреть java.util.Stack класс. у него есть push, pop методы. и реализован интерфейс List.

для смены / снятия, вы можете сослаться на ответ @ Jon.

однако, что-то из ArrayList может вас заинтересовать, arrayList не синхронизирован. но стек есть. (подкласс Vector). Если у вас есть требования к потокобезопасности, стек может быть лучше, чем ArrayList.

1 голос
/ 04 декабря 2018

Отличный ответ Джон .

Я ленивый и ненавижу печатать, поэтому я создал простой пример для всех остальных людей, похожих на меня.Наслаждайтесь!

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<String> animals = new ArrayList<>();

        animals.add("Lion");
        animals.add("Tiger");
        animals.add("Cat");
        animals.add("Dog");

        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

        // add() -> push(): Add items to the end of an array
        animals.add("Elephant");
        System.out.println(animals);  // [Lion, Tiger, Cat, Dog, Elephant]

        // remove() -> pop(): Remove an item from the end of an array
        animals.remove(animals.size() - 1);
        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

        // add(0,"xyz") -> unshift(): Add items to the beginning of an array
        animals.add(0, "Penguin");
        System.out.println(animals); // [Penguin, Lion, Tiger, Cat, Dog]

        // remove(0) -> shift(): Remove an item from the beginning of an array
        animals.remove(0);
        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

    }

}
1 голос
/ 01 августа 2016

Библиотека Underscore-java содержит методы push (значения), pop (), shift () и unshift (значения).

Пример кода:

import com.github.underscore.U:

List<String> strings = Arrays.asList("one", "two", " three");
List<String> newStrings = U.push(strings, "four", "five");
// ["one", " two", "three", " four", "five"]
String newPopString = U.pop(strings).fst();
// " three"
String newShiftString = U.shift(strings).fst();
// "one"
List<String> newUnshiftStrings = U.unshift(strings, "four", "five");
// ["four", " five", "one", " two", "three"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...