Saya telah menentukan bahwa Java ArrayList.add
mirip dengan JavaScriptArray.push
Saya terjebak dalam menemukan ArrayList
fungsi yang mirip dengan berikut ini
Array.pop
Array.shift
Array.unshift
Saya condong ke arahArrayList.remove[At]
Jawaban:
ArrayList
unik dalam standar penamaannya. Berikut persamaannya:
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
Perhatikan bahwa unshift
tidak menghapus elemen, tetapi menambahkan satu ke daftar. Perhatikan juga bahwa perilaku kasus sudut mungkin berbeda antara Java dan JS, karena masing-masing memiliki standarnya sendiri.
.push
?
Array.push -> ArrayList.add
, dan secara khusus bertanya tentang pop
, shift
dan unshift
. Membaca ini lagi, saya akan menambahkan lebih banyak penjelasan dan menambahkan .push
pada saat yang bersamaan.
Saya menghadapi masalah ini beberapa waktu lalu dan saya menemukan java.util.LinkedList
yang terbaik untuk kasus saya. Ini memiliki beberapa metode, dengan penamaan berbeda, tetapi mereka melakukan apa yang dibutuhkan:
push() -> LinkedList.addLast(); // Or just LinkedList.add();
pop() -> LinkedList.pollLast();
shift() -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();
LinkeList
menambahkan metode yang akan sangat tidak efisien pada ArrayList
ke List
antarmuka, ini adalah apa yang saya bingung. Metode ini berasal dari antarmuka Deque
dan Queue
yang diimplementasikannya, tetapi ArrayList
tidak.
mungkin Anda ingin melihat-lihat java.util.Stack
kelas. itu memiliki metode push, pop. dan menerapkan antarmuka Daftar.
Untuk shift / unshift, Anda bisa mereferensikan jawaban @ Jon.
namun, sesuatu dari ArrayList yang mungkin ingin Anda pedulikan, arrayList tidak disinkronkan. tapi Stack adalah. (sub-kelas Vektor). Jika Anda memiliki persyaratan thread-safe, Stack mungkin lebih baik daripada ArrayList.
Jawaban Hebat oleh Jon .
Saya malas dan saya benci mengetik, jadi saya membuat contoh potong dan tempel sederhana untuk semua orang yang seperti saya. Nikmati!
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]
}
}
Library Underscore-java berisi metode push (values), pop (), shift (), dan unshift (values).
Contoh kode:
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"]