ฉันพิจารณาแล้วว่า Java ArrayList.add
นั้นคล้ายกับ JavaScriptArray.push
ฉันติดขัดในการค้นหาArrayList
ฟังก์ชันที่คล้ายกับสิ่งต่อไปนี้
Array.pop
Array.shift
Array.unshift
ฉันเอนเอียงไปArrayList.remove[At]
ฉันพิจารณาแล้วว่า 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
ชั้นเรียน มันมีวิธีผลักดันป๊อป และใช้งานอินเทอร์เฟซรายการ
สำหรับ shift / unshift คุณสามารถอ้างอิงคำตอบของ @ Jon
อย่างไรก็ตามบางอย่างของ ArrayList ที่คุณอาจต้องการให้ความสนใจ ArrayList ไม่ซิงโครไนซ์ แต่กองคือ (คลาสย่อยของ Vector) หากคุณมีข้อกำหนดที่ปลอดภัยต่อเธรด 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 (values)
ตัวอย่างโค้ด:
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"]