Я визначив, що Java ArrayList.add
схожа на JavaScriptArray.push
Я застряг у пошуку ArrayList
функцій, подібних до наведених нижче
Array.pop
Array.shift
Array.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"]