J'ai déterminé qu'un Java ArrayList.add
est similaire à un JavaScriptArray.push
Je n'arrive pas à trouver des ArrayList
fonctions similaires aux suivantes
Array.pop
Array.shift
Array.unshift
Je me penche versArrayList.remove[At]
Réponses:
ArrayList
est unique dans ses normes de dénomination. 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
cela ne supprime pas un élément, mais en ajoute un à la liste. Notez également que les comportements de cas d'angle sont susceptibles d'être différents entre Java et JS, car ils ont chacun leurs propres normes.
.push
?
Array.push -> ArrayList.add
, et plus précisément posé des questions sur pop
, shift
et unshift
. En relisant ceci, je vais ajouter plus d'explications et ajouter .push
en même temps.
J'étais confronté à ce problème il y a quelque temps et j'ai trouvé que c'était java.util.LinkedList
mieux pour mon cas. Il a plusieurs méthodes, avec des noms différents, mais ils font ce qui est nécessaire:
push() -> LinkedList.addLast(); // Or just LinkedList.add();
pop() -> LinkedList.pollLast();
shift() -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();
LinkeList
ajoute des méthodes qui seraient très inefficaces sur ArrayList
l' List
interface, c'est ce qui m'a dérouté. Ces méthodes proviennent des interfaces Deque
et Queue
qu'elle implémente, mais ArrayList
pas.
peut-être que vous voulez prendre un cours de look java.util.Stack
. il a des méthodes push, pop. et implémentation de l'interface de liste.
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 l'est. (sous-classe de Vector). Si vous avez besoin de thread-safe, Stack peut être meilleur que ArrayList.
Excellente réponse de Jon .
Je suis paresseux et je déteste taper, alors j'ai 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]
}
}
La bibliothèque Underscore-java contient les méthodes push (valeurs), pop (), shift () et unshift (valeurs).
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"]