สี่วิธีของ Java Arraylist Traversal และการใช้งานคลาส ArrayList ใน Java
แพ็คเกจ com.test; นำเข้า java.util.arraylist; นำเข้า java.util.iterator; นำเข้า java.util.list; คลาสสาธารณะ arraylistdemo {โมฆะคงที่สาธารณะหลัก (สตริง args []) {รายการ <string> รายการ = arraylist ใหม่ สตริง> (); (it1.next ()); สำหรับ (String TMP: list) {system.out.println (tmp);} // วิธีการ 4 สำหรับ (int i = 0; i <list.size (); i ++) {system.out.println (รายการ รับ (i));PS: การใช้คลาส ArrayList ใน Java
1. ArrayList คืออะไร
ArrayList เป็นอาร์เรย์แบบไดนามิกในตำนาน
เพิ่มและลดองค์ประกอบแบบไดนามิกแบบไดนามิก
ใช้อินเทอร์เฟซ ICOLLECTION และ ILIST
การตั้งค่าขนาดอาร์เรย์ที่ยืดหยุ่น
2. วิธีใช้ ArrayList
ตัวอย่างที่ง่ายที่สุด:
arraylist list = new ArrayList (); 5); // ลบองค์ประกอบที่ 6 สำหรับ (int i = 0; i <3; i ++) // เพิ่ม 3 รายการเพิ่มเติม list.add (i+20); .toArray (typeof (int32)); // ส่งคืนอาร์เรย์ที่มีอยู่ใน ArrayList
นี่เป็นตัวอย่างง่ายๆ
3. วิธีการและคุณสมบัติที่สำคัญของ ArrayList
1) ตัวสร้าง
ArrayList ให้สามตัวสร้าง:
Public Arraylist ();
ตัวสร้างเริ่มต้นจะเริ่มต้นอาร์เรย์ภายในด้วยขนาดเริ่มต้น (16)
Public Arraylist (Icollection);
สร้างด้วยวัตถุ icollection และเพิ่มองค์ประกอบของคอลเลกชันลงใน ArrayList
Public Arraylist (int);
เริ่มต้นอาร์เรย์ภายในด้วยขนาดที่ระบุ
2) ทรัพย์สินและ arraylist.synchronized วิธีการ
คุณสมบัติ ISSYNCHRONIZED ระบุว่าอินสแตนซ์ ArrayList ปัจจุบันรองรับการซิงโครไนซ์เธรดในขณะที่ arrayList.Synchronized method ส่งคืนการห่อหุ้มการซิงโครไนซ์เธรด ArrayList
หากคุณใช้อินสแตนซ์การซิงโครไนซ์ที่ไม่ได้อ่านคุณต้องเรียกล็อคด้วยตนเองเพื่อให้การซิงโครไนซ์เธรดเมื่อเข้าถึงมัลติเธรดตัวอย่างเช่น:
arraylist list = new ArrayList ();
คุณสมบัติ Syncroot นั้นเป็นของตัวเอง แต่เพื่อให้เป็นไปตามคำจำกัดความของ syncroot ของ icollection
ที่นี่เรายังคงใช้ Syncroot เพื่อรักษามาตรฐานของซอร์สโค้ด
{list.add ("เพิ่มรายการ");หากคุณใช้อินสแตนซ์ที่ส่งคืนโดย arraylist.synchronized วิธีการที่คุณไม่จำเป็นต้องพิจารณาปัญหาของการซิงโครไนซ์เธรด โดย arraylist.synchronized อินสแตนซ์แต่ละคุณสมบัติในนั้นใช้คำหลักล็อคเพื่อให้แน่ใจว่าการซิงโครไนซ์เธรด
3) แอตทริบิวต์นับและแอตทริบิวต์ความจุ
คุณสมบัติการนับคือจำนวนองค์ประกอบที่มีอยู่ในปัจจุบันใน ArrayList และคุณสมบัตินี้เป็นแบบอ่านอย่างเดียว
คุณสมบัติความจุคือจำนวนสูงสุดที่ ArrayList สามารถมีได้ในปัจจุบัน
4) เพิ่ม, addRange, ลบ, ลบ, ลบ, การแทรก, แทรก, insertrange
วิธีการเหล่านี้คล้ายกัน
วิธีการเพิ่มใช้เพื่อเพิ่มองค์ประกอบในตอนท้ายของรายการปัจจุบัน
วิธี AddRange ใช้เพื่อเพิ่มชุดขององค์ประกอบในตอนท้ายของรายการปัจจุบัน
วิธีการลบใช้เพื่อลบองค์ประกอบและลบผ่านการอ้างอิงขององค์ประกอบเอง
วิธีการลบใช้เพื่อลบองค์ประกอบและลบโดยการจัดทำดัชนีค่า
Removerange ใช้เพื่อลบชุดขององค์ประกอบซึ่งถูกลบโดยการระบุดัชนีเริ่มต้นและจำนวนการลบ
INSERT ใช้เพื่อเพิ่มองค์ประกอบไปยังตำแหน่งที่ระบุและองค์ประกอบที่อยู่เบื้องหลังรายการจะถูกย้ายไปข้างหลังในทางกลับกัน
InserTrange ใช้เพื่อเพิ่มชุดขององค์ประกอบจากตำแหน่งที่กำหนดและองค์ประกอบที่อยู่ด้านหลังรายการจะถูกย้ายไปข้างหลังในทางกลับกัน
นอกจากนี้ยังมีวิธีการที่คล้ายกันหลายวิธี:
วิธีการที่ชัดเจนใช้เพื่อล้างองค์ประกอบที่มีอยู่ทั้งหมด
วิธีการที่ใช้เพื่อค้นหาว่าวัตถุไม่ได้อยู่ในรายการ
ฉันจะไม่ได้รับภาระกับส่วนที่เหลือ
5) วิธีการตัดแต่ง
วิธีนี้ใช้เพื่อแก้ไขอาร์เรย์ลิสต์กับขนาดขององค์ประกอบจริง
6) วิธีการ toarray
วิธีนี้คัดลอกองค์ประกอบ ArrayList ลงในอาร์เรย์ใหม่
4. ArrayList และ Array Conversion
ตัวอย่างที่ 1:
arraylist list = new ArrayList (); ;
ตัวอย่างที่ 2:
arraylist list = new ArrayList (); ;
ข้างต้นแนะนำสองวิธีในการแปลงจาก ArrayList เป็นอาร์เรย์
ตัวอย่างที่ 3:
arraylist list = new ArrayList (); ;
มันแตกต่างจากอาร์เรย์เพราะสามารถแปลงเป็นอาร์เรย์วัตถุดังนั้นมันจะไม่ทำผิดพลาดใด ๆ ในการเพิ่มองค์ประกอบประเภทต่าง ๆ ลงในอาร์เรย์ สามารถแปลงได้อย่างถูกต้องโดยองค์ประกอบทั้งหมดมิฉะนั้นข้อยกเว้นที่ไม่สามารถเปลี่ยนได้จะถูกโยนลงไป
5. คำแนะนำที่ดีที่สุดในการใช้ ArrayList
ในส่วนนี้เราจะหารือเกี่ยวกับความแตกต่างระหว่าง ArrayList และ Array รวมถึงประสิทธิภาพของ ArrayList
1) ArrayList เป็นอาร์เรย์รุ่นที่ซับซ้อน
ArrayList ห่อหุ้มอาร์เรย์ของประเภทวัตถุโดยทั่วไป
กำหนดขนาดขององค์ประกอบจริง
6) วิธีการ toarray
วิธีนี้คัดลอกองค์ประกอบ ArrayList ลงในอาร์เรย์ใหม่
4. ArrayList และ Array Conversion
ตัวอย่างที่ 1:
arraylist list = new ArrayList (); ;
ตัวอย่างที่ 2:
arraylist list = new ArrayList (); ;
ข้างต้นแนะนำสองวิธีในการแปลงจาก ArrayList เป็นอาร์เรย์
ตัวอย่างที่ 3:
arraylist list = new ArrayList (); ;
มันแตกต่างจากอาร์เรย์เพราะสามารถแปลงเป็นอาร์เรย์วัตถุดังนั้นมันจะไม่ทำผิดพลาดใด ๆ ในการเพิ่มองค์ประกอบประเภทต่าง ๆ ลงในอาร์เรย์ สามารถแปลงได้อย่างถูกต้องโดยองค์ประกอบทั้งหมดมิฉะนั้นข้อยกเว้นที่ไม่สามารถเปลี่ยนได้จะถูกโยนลงไป
5. คำแนะนำที่ดีที่สุดในการใช้ ArrayList
ในส่วนนี้เราจะหารือเกี่ยวกับความแตกต่างระหว่าง ArrayList และ Array รวมถึงประสิทธิภาพของ ArrayList
1) ArrayList เป็นอาร์เรย์รุ่นที่ซับซ้อน
ArrayList ห่อหุ้มอาร์เรย์ประเภทวัตถุโดยทั่วไปมันไม่มีความแตกต่างที่สำคัญจากอาร์เรย์ วิธีการอาร์เรย์
2) อิทธิพลของประเภทวัตถุภายใน
สำหรับประเภทการอ้างอิงทั่วไปส่วนนี้ไม่มีผลกระทบอย่างมาก แต่สำหรับประเภทค่าการเพิ่มและการปรับเปลี่ยนองค์ประกอบลงใน ArrayList จะทำให้เกิดการบรรจุและการดำเนินการยกเลิกการบ็อกซ์และการดำเนินงานบ่อยครั้งอาจส่งผลกระทบต่อประสิทธิภาพบางอย่าง
แต่สำหรับคนส่วนใหญ่แอปพลิเคชันส่วนใหญ่ใช้อาร์เรย์ของประเภทค่า
ไม่มีวิธีกำจัดผลกระทบนี้
3) การขยายตัวของอาร์เรย์
นี่เป็นปัจจัยที่มีผลกระทบมากขึ้นต่อประสิทธิภาพของ ArrayList
เมื่อใดก็ตามที่คุณดำเนินการเพิ่ม, addRange, แทรก, การแทรกและวิธีการอื่น ๆ เพื่อเพิ่มองค์ประกอบมันจะตรวจสอบว่าความสามารถของอาร์เรย์ภายในไม่เพียงพอหรือไม่ ใหม่
ตัวอย่างที่ 1: ตัวอย่างเช่นหากข้อมูลที่มีองค์ประกอบ 200 รายการถูกเพิ่มไปยัง arrayList ที่สร้างขึ้นด้วยขนาดเริ่มต้นของ 16 องค์ประกอบมันจะผ่าน:
16*2*2*2 = 256
การขยายสี่ครั้งจะเป็นไปตามข้อกำหนดขั้นสุดท้ายดังนั้นหาก:
arraylist list = new ArrayList (210);
สร้าง arraylist ในวิธีที่ไม่เพียง แต่ลดการสร้างอาร์เรย์ 4 ครั้งและการดำเนินการคัดลอก แต่ยังลดการใช้หน่วยความจำ
ตัวอย่างที่ 2: arrayList ถูกสร้างขึ้นด้วยองค์ประกอบ 30 ที่คาดหวัง:
arraylist list = new ArrayList (30);
ในระหว่างกระบวนการดำเนินการหากมีการเพิ่มองค์ประกอบ 31 รายการอาร์เรย์จะถูกขยายเป็นขนาด 60 องค์ประกอบและจะไม่มีการเพิ่มองค์ประกอบใหม่ในเวลานี้ . และสูญเสียพื้นที่ขนาด 29 หากในเวลานี้ใช้:
arraylist list = new ArrayList (40);
จากนั้นทุกอย่างได้รับการแก้ไข
ดังนั้นการประเมินองค์ประกอบที่เป็นไปได้อย่างถูกต้องและการเรียกใช้วิธีการตัดแต่งในเวลาที่เหมาะสมเป็นวิธีที่สำคัญในการปรับปรุงประสิทธิภาพของการใช้ ArrayList
4) การโทรหาดัชนีบ่อยครั้งมีและวิธีการอื่น ๆ (เรียงลำดับไบนารีการค้นหาและสี่เหลี่ยมอื่น ๆ
การสูญเสียประสิทธิภาพที่เกิดจากวิธีนี้ได้รับการปรับให้เหมาะสมไม่ใช่ในคอลัมน์นี้) ก่อนอื่นเราต้องทำให้ชัดเจนว่า ArrayList เป็นอาร์เรย์แบบไดนามิกซึ่งไม่รวมอัลกอริทึมที่เข้าถึงได้อย่างรวดเร็วผ่านคีย์หรือค่าดังนั้นในความเป็นจริง การโทรหาดัชนีและวิธีการอื่น ๆ นั้นง่ายต่อการดำเนินการ คู่ที่มีค่าเช่น Hashtable หรือ SortEdList
arraylist al = new ArrayList (); al.add ("How"); al.add (300); al.add (1.2); al.add (22.8);