Tôi đã xác định rằng Java ArrayList.add
tương tự như JavaScriptArray.push
Tôi gặp khó khăn khi tìm các ArrayList
chức năng tương tự như sau
Array.pop
Array.shift
Array.unshift
Tôi đang nghiêng về phíaArrayList.remove[At]
Câu trả lời:
ArrayList
là 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 unshift
khô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.
.push
thì sao?
Array.push -> ArrayList.add
, và yêu cầu cụ thể về pop
, shift
và unshift
. Đọc lại điều này, tôi sẽ bổ sung thêm lời giải thích và bổ sung .push
cù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.LinkedList
là 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();
LinkeList
bổ sung thêm các phương pháp đó sẽ là rất không hiệu quả trên ArrayList
đến List
giao 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 Deque
và Queue
mà nó thực hiện, nhưng ArrayList
không.
có thể bạn muốn tham gia một java.util.Stack
lớ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"]