119 votes

java howto ArrayList push, pop, shift et unshift

J'ai déterminé qu'un Java ArrayList.add est similaire à un JavaScript Array.push

Je suis bloqué sur la recherche de fonctions ArrayList similaires à ce qui suit

  • Array.pop
  • Array.shift
  • Array.unshift je penche pour ArrayList.remove[At]

190voto

Jon Points 4637

ArrayList est unique dans ses normes de nommage. Voici les équivalences :

 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

Notez que unshift ne supprime pas un élément, mais en ajoute un à la liste. Notez également que les comportements des cas particuliers sont susceptibles d'être différents entre Java et JS, car ils ont chacun leurs propres normes.

35voto

Wirone Points 801

J'étais confronté à ce problème il y a quelque temps et j'ai trouvé quejava.util.LinkedList était le mieux pour mon cas. Il a plusieurs méthodes, avec des noms différents, mais ils font ce qu'il faut :

 push()    -> LinkedList.addLast(); // Or just LinkedList.add();
pop()     -> LinkedList.pollLast();
shift()   -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();

15voto

Kent Points 71470

peut-être que vous voulez jeter un oeil à la classe java.util.Stack il a des méthodes push, pop. et implémenté l'interface List.

pour shift/unshift, vous pouvez référencer la réponse de @Jon.

cependant, quelque chose de ArrayList dont vous voudrez peut-être vous soucier, arrayList n'est pas synchronisé. mais Stack est. (sous-classe de Vector). Si vous avez des exigences thread-safe, Stack peut être meilleur que ArrayList.

7voto

Adrian Smith Points 336

Excellente réponse de Jon .

Je suis paresseux et je déteste taper, j'ai donc créé un exemple simple de copier-coller pour toutes les autres personnes qui sont comme moi. Prendre plaisir!

 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]

    }

}

0voto

La bibliothèque Underscore-java contient les méthodes push(values), pop(), shift() et unshift(values).

Exemple de code :

 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"]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X