Я визначив, що Java ArrayList.addсхожа на JavaScriptArray.push
Я застряг у пошуку ArrayListфункцій, подібних до наведених нижче
Array.popArray.shiftArray.unshiftЯ схиляюся доArrayList.remove[At]
Відповіді:
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, оскільки кожна з них має свої власні стандарти.
.push?
Array.push -> ArrayList.add, і , в зокрема питання про pop, shiftі unshift. Читаючи це ще раз, я збираюся додати більше пояснень і додати .pushодночасно.
Я стикався з цією проблемою деякий час тому і виявив, що java.util.LinkedListце найкраще для мого випадку. Він має кілька методів з різними іменами, але вони роблять те, що потрібно:
push() -> LinkedList.addLast(); // Or just LinkedList.add();
pop() -> LinkedList.pollLast();
shift() -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();
LinkeListдодає ArrayList до Listінтерфейсу методи, які були б дуже неефективними , саме це мене бентежило. Ці методи походять від інтерфейсів Dequeі, Queueякі він реалізує, але ArrayListні.
можливо, ви хочете поглянути на java.util.Stackклас. він має push, pop методи. та реалізований інтерфейс List.
для shift / unshift ви можете посилатися на відповідь @ Jon.
однак, щось із ArrayList, про яке ви можете піклуватися, arrayList не синхронізується. але Стек є. (підклас Вектор). Якщо у вас є вимоги до безпечної роботи з потоками, Stack може бути кращим за ArrayList.
Чудова відповідь Джона .
Хоча я лінивий і ненавиджу друкувати, тому створив простий приклад для вирізання та вставки для всіх інших людей, подібних до мене. Насолоджуйтесь!
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]
}
}
Бібліотека 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"]