java howto ArrayList push, pop, shift en unshift

Ik heb vastgesteld dat een Java ArrayList.addvergelijkbaar is met een JavaScript Array.push

Ik loop vast bij het vinden van ArrayList-functies die vergelijkbaar zijn met de volgende

  • Array.pop
  • Array.shift
  • Array.unshiftIk neig naar ArrayList.remove[At]

Antwoord 1, autoriteit 100%

ArrayListis uniek in zijn naamgevingsnormen. Dit zijn de equivalenten:

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

Merk op dat unshifteen element niet verwijdert, maar in plaats daarvan een element toevoegtaan de lijst. Houd er ook rekening mee dat het gedrag van hoekgevallen waarschijnlijk anders is tussen Java en JS, omdat ze elk hun eigen standaarden hebben.


Antwoord 2, autoriteit 16%

Ik had een tijdje geleden met dit probleem te maken en vond java.util.LinkedListis het beste voor mijn geval. Het heeft verschillende methoden, met verschillende namen, maar ze doen wat nodig is:

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

Antwoord 3, Autoriteit 10%

Misschien wil je een kijkje nemen java.util.Stackklasse.
Het heeft duw-, popmethoden. en geïmplementeerde lijstinterface.

Voor shift / unshift, kunt u referentie @ JON’s antwoord.

Er is echter misschien iets van arrayclist waar u om geeft, ArrayList is niet gesynchroniseerd. Maar stapel is. (subklasse van vector). Als u draadveilige vereiste heeft, kan Stack beter zijn dan arraylist.


Antwoord 4, Autoriteit 2%

Groot antwoord door jon .

Ik ben echter lui en ik haat het typen, dus ik heb een eenvoudig gesneden en pasta-voorbeeld voor alle andere mensen die zijn zoals ik. Geniet!

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

Antwoord 5

Underscore-javabibliotheek bevat methoden push(values), pop(), shift( ) en unshift(waarden).

Codevoorbeeld:

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

Other episodes