Saya telah menentukan bahwa Java ArrayList.addmirip dengan JavaScriptArray.push
Saya terjebak dalam menemukan ArrayListfungsi yang mirip dengan berikut ini
Array.popArray.shiftArray.unshiftSaya condong ke arahArrayList.remove[At]
Jawaban:
ArrayListunik 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 unshifttidak 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, shiftdan unshift. Membaca ini lagi, saya akan menambahkan lebih banyak penjelasan dan menambahkan .pushpada saat yang bersamaan.
Saya menghadapi masalah ini beberapa waktu lalu dan saya menemukan java.util.LinkedListyang 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();
LinkeListmenambahkan metode yang akan sangat tidak efisien pada ArrayList ke Listantarmuka, ini adalah apa yang saya bingung. Metode ini berasal dari antarmuka Dequedan Queueyang diimplementasikannya, tetapi ArrayListtidak.
mungkin Anda ingin melihat-lihat java.util.Stackkelas. 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"]