Tôi đã xác định rằng Java ArrayList.addtương tự như JavaScriptArray.push
Tôi gặp khó khăn khi tìm các ArrayListchức năng tương tự như sau
Array.popArray.shiftArray.unshiftTôi đang nghiêng về phíaArrayList.remove[At]
Câu trả lời:
ArrayListlà duy nhất trong các tiêu chuẩn đặt tên của nó. Dưới đây là các điểm tương đương:
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
Lưu ý rằng unshiftkhông loại bỏ một phần tử, nhưng thay vào đó thêm một phần tử vào danh sách. Cũng xin lưu ý rằng các hành vi dạng chữ hoa góc có thể khác nhau giữa Java và JS, vì chúng có tiêu chuẩn riêng.
.pushthì sao?
Array.push -> ArrayList.add, và yêu cầu cụ thể về pop, shiftvà unshift. Đọc lại điều này, tôi sẽ bổ sung thêm lời giải thích và bổ sung .pushcùng một lúc.
Tôi đã đối mặt với vấn đề này một thời gian trước đây và tôi thấy java.util.LinkedListlà tốt nhất cho trường hợp của tôi. Nó có một số phương thức, với các tên khác nhau, nhưng chúng đang làm những gì cần thiết:
push() -> LinkedList.addLast(); // Or just LinkedList.add();
pop() -> LinkedList.pollLast();
shift() -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();
LinkeListbổ sung thêm các phương pháp đó sẽ là rất không hiệu quả trên ArrayList đến Listgiao diện, đây là những gì nhầm lẫn tôi. Các phương thức này đến từ giao diện Dequevà Queuemà nó thực hiện, nhưng ArrayListkhông.
có thể bạn muốn tham gia một java.util.Stacklớp học. nó có các phương thức push, pop. và giao diện Danh sách được triển khai.
đối với shift / unshift, bạn có thể tham khảo câu trả lời của @ Jon.
tuy nhiên, một số thứ về ArrayList mà bạn có thể muốn quan tâm, arrayList không được đồng bộ hóa. nhưng Stack là. (hạng con của Vector). Nếu bạn có yêu cầu an toàn luồng, Stack có thể tốt hơn ArrayList.
Câu trả lời tuyệt vời của Jon .
Mặc dù vậy, tôi lười và tôi ghét đánh máy, vì vậy tôi đã tạo một ví dụ cắt và dán đơn giản cho tất cả những người khác giống tôi. Thưởng thức!
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]
}
}
Thư viện underscore-java chứa các phương thức push (giá trị), pop (), shift () và unshift (giá trị).
Ví dụ về mã:
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"]