методы ArrayList
แนะนำใหม่| English | ความหมาย |
|---|---|
| ArrayList/əˈreɪ lɪst/ | ArrayList |
การแทรกเปลี่ยนดัชนีในภายหลัง
- ArrayList เริ่มต้นที่
[cat, dog]add(1, "owl")ทำให้เกิด[cat, owl, dog], จากนั้นremove(0)ทำให้เกิด[owl, dog]get(1)ตอนนี้จะคืนค่า"dog" - ติดตามทั้งรายการหลังจากแต่ละการดำเนินการ: การแทรกจะเลื่อนองค์ประกอบในภายหลังไปทางขวา ในขณะที่การลบจะเลื่อน它们在ทางซ้าย ดัชนีระบุตำแหน่ง ไม่ใช่ตัวตนถาวรขององค์ประกอบ
รายการมีขนาดและชนิดขององค์ประกอบ
- ArrayList เก็บลำดับอ้างอิงที่มีขนาดปรับได้ Import
java.util.ArrayListและประกาศArrayList<String> names = new ArrayList<String>();; ขนาดเริ่มต้นเท่ากับ 0 - พารามิเตอร์ชนิดคือ reference type ดังนั้นใช้
Integerสำหรับจำนวนเต็มแทนที่จะใช้intsize()นับองค์ประกอบที่เก็บไว้; ความจุเริ่มต้นคือพื้นที่สำหรับขยายและไม่สร้างองค์ประกอบจำนวนนั้น
เพิ่มหรือแทรกภายในขอบเขตที่ถูกต้อง
add(x)เพิ่มองค์ประกอบ;add(i, x)แทรกก่อนองค์ประกอบปัจจุบันที่ i. สำหรับการแทรก ดัชนีที่ถูกต้องจะอยู่ในช่วง 0 ถึง size รวมกัน ดังนั้นadd(size(), x)จึงเป็นการเพิ่มด้วยget(i)อ่านองค์ประกอบที่มีอยู่ ดังนั้นดัชนีจึงอยู่ในช่วง 0 ถึง size ลบ 1. ลิสต์ว่างไม่มี valid get index;get(size())อยู่นอกขอบเขตแม้ว่าการแทรกที่ตำแหน่งนั้นจะเป็นไปได้ก็ตาม
สำหรับรายการขนาด 2, add(2, value) เป็นไปได้ แต่ get(2) จะเกินขอบเขต
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การแทรกอนุญาตให้ใช้ตำแหน่งที่เท่ากับขนาด; get ต้องใช้อินดักซ์ที่มีอยู่จริงซึ่งมีค่าน้อยกว่าขนาดอย่างเด็ดขาด
การแทนที่และการลบด้วย ให้ผลลัพธ์ที่แตกต่างกัน
set(i, x)แทนที่องค์ประกอบที่มีอยู่และคืนค่าเก่าโดยไม่เปลี่ยนขนาดremove(int i)ลบองค์ประกอบที่ตำแหน่งนั้น คืนค่ามัน และลดขนาดลงหนึ่งหน่วย- overloaded
remove(Object value)แทนที่จะลบค่าแรกที่เท่ากันและคืนว่ามีการลบการจับคู่หรือไม่ ในArrayList<Integer>,remove(1)หมายถึงดัชนี 1; ใช้remove(Integer.valueOf(1))เพื่อลบค่า 1
import java.util.ArrayList;
import java.util.Arrays;
public class RemoveChoice {
public static void main(String[] args) {
ArrayList<Integer> byIndex = new ArrayList<>(Arrays.asList(1, 2, 1));
ArrayList<Integer> byValue = new ArrayList<>(Arrays.asList(1, 2, 1));
int removed = byIndex.remove(1);
boolean found = byValue.remove(Integer.valueOf(1));
System.out.println(removed + " " + byIndex);
System.out.println(found + " " + byValue);
}
}
เอาต์พุตทั้งสองคือ 2 [1, 1] และ true [2, 1]. แต่ละลิสต์สูญเสียองค์ประกอบหนึ่ง แต่เป็นองค์ประกอบที่ต่างกัน
add, get, และ remove
หลังจาก remove(0), dog จะย้ายไปยัง index 0 และขนาดจะลดลงเหลือ 1
คุณจะได้จำนวนองค์ประกอบใน ArrayList list อย่างไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ArrayList ใช้ size(); arrays ใช้ .length
สำหรับ ArrayList list ที่มีองค์ประกอบอย่างน้อยสามตัว คุณจะเข้าถึงองค์ประกอบที่ดัชนี 2 ได้อย่างไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ArrayList ใช้ get(i), ไม่ใช่ [i]
หลังจาก a.remove(0) บน {cat, dog}, a.get(0) จะเป็นอะไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
remove(0) ลบ cat; dog ย้ายไปยัง index 0
คุณสามารถเข้าถึงองค์ประกอบของ ArrayList ด้วยวงเล็บเหลี่ยม เช่น list[0]
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ArrayList ใช้ methods (get/set), ไม่ใช่ syntax []
add(x) ที่มีอาร์กิวเมนต์เดียวเพิ่ม x...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
add(x) เพิ่มท้าย; add(i, x)แทรกที่ index i
เริ่มต้นจาก [1, 2, 1], remove(1) ถูกเรียกด้วยอาร์กิวเมนต์ int ค่าอะไรจะถูกส่งกลับ?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ฟังก์ชัน int overload จะลบดัชนี 1 ออก ซึ่งองค์ประกอบนั้นคือ 2
เลือกโดย จากประเภทพารามิเตอร์ที่ประกาศ
- Java เลือก overloaded โดยใช้ชนิดของอาร์กิวเมนต์
int index = 1; list.remove(index);ลบตำแหน่ง 1;Integer value = 1; list.remove(value);เลือกการลบด้วยค่า - String list สามารถลบ
"owl"ด้วยค่าหรือ index 0 ตามตำแหน่ง ตัดสินใจว่าสิ่งที่คุณหมายถึงคืออะไรก่อนติดตามการเลื่อน; การหาไม่พบค่าที่เท่ากันจะคืน false และทำให้ลิสต์ไม่เปลี่ยนแปลง
Arrays ใช้ a[i] และ a.length; ArrayList ใช้ get(i) และ size(). รักษาขอบเขตการแทรกให้แยกจากขอบเขตองค์ประกอบที่มีอยู่ และอย่าสันนิษฐานว่าอาร์กิวเมนต์ที่ดูเป็น integer สำหรับ remove จะหมายถึงค่าที่จัดเก็บเสมอ
ตรวจสอบการแทนที่หนึ่งครั้งและการลบที่ไม่สำเร็จหนึ่งครั้งด้วย
- เริ่มตั้งแต่
[owl, dog],set(1, "fox")คืน"dog"และทิ้ง[owl, fox]ที่มีขนาด 2.remove("cat")จากนั้นจะคืน false และไม่เปลี่ยนแปลงอะไรเลย - ตรวจสอบลิสต์ว่าง ตำแหน่งที่ถูกต้องแรก/สุดท้าย และค่าที่ไม่มีอยู่ อ่าน overload และค่าที่คืนมาพร้อมกับลิสต์ที่เกิดขึ้น; การแทนที่ การแทรก และการลบมีสัญญา (contracts) ที่แตกต่างกัน
ArrayList เป็นลำดับที่ปรับขนาดได้ซึ่งเข้าถึงผ่านวิธีการ แทรกที่ 0 ถึง size; อ่าน แทนที่ หรือลบตำแหน่งที่มีอยู่ที่ 0 ถึง size ลบ 1. remove(int) ลบตำแหน่ง; remove(Object) ลบค่าแรกที่เท่ากันหากพบ
After the stated insertion and removal, type the value returned by get(0).
Difficulty 1/5 · 100 coins + a small bonus on first completion today
The final list is [owl, dog], with owl at index 0.