คำนำ:
บทความนี้แนะนำการเปรียบเทียบข้อดีและข้อเสียของสถานการณ์ทั้งสามของการแปลงอาร์เรย์เป็นรายการใน Java รวมถึงการเปรียบเทียบสถานการณ์แอปพลิเคชันและการวิเคราะห์สาเหตุของข้อผิดพลาดในการแปลงประเภทที่โปรแกรมเมอร์มักจะทำ
1. วิธีที่พบบ่อยที่สุด (ไม่จำเป็นต้องดีที่สุด)
หลังจากแปลงอาร์เรย์เป็นรายการผ่าน Arrays.asList(strArray) คุณไม่สามารถเพิ่มหรือลบรายการได้ คุณสามารถตรวจสอบและแก้ไขได้เท่านั้นมิฉะนั้นจะมีข้อยกเว้น
รหัสคีย์: List list = Arrays.asList(strArray);
โมฆะส่วนตัว TestArraycastToListerRor () {String [] strarray = สตริงใหม่ [2]; รายการรายการ = array.aslist (strarray); // แทรกข้อมูลลงในรายการรายการที่แปลงแล้ว ("1"); System.out.println (รายการ); -ผลการดำเนินการ:
ข้อยกเว้นใน Thread "Main" Java.lang.unsupportedOperationException
ที่ java.util.abstractlist.add (Abstractlist.java:148)
ที่ java.util.abstractlist.add (Abstractlist.java:108)
ที่ com.darwin.junit.calculator.testarraycasttolist (calculator.java:19)
ที่ com.darwin.junit.calculator.main (calculator.java:44)
โปรแกรมโยนข้อยกเว้นที่ list.add(“1”) UnsupportedOperationException
การวิเคราะห์เหตุผล:
ค่าผลตอบแทนของ Arrays.asList(strArray) เป็นชั้นในส่วนตัว java.util.Arrays คลาส java.util.Arrays.ArrayList ซึ่งไม่ใช่คลาส java.util.ArrayList คลาส java.util.Arrays.ArrayList ได้ set() , get() , contains() และวิธีการอื่น ๆ แต่ไม่มีวิธีการเพิ่ม add() หรือลบ remove() ดังนั้นการเรียก add() จะทำให้เกิดข้อผิดพลาด
สถานการณ์การใช้งาน: วิธีการ Arrays.asList(strArray) สามารถใช้หลังจากแปลงอาร์เรย์เป็นรายการเท่านั้น ไม่จำเป็นต้องเพิ่มหรือลบค่าในนั้นและใช้เป็นแหล่งข้อมูลในการอ่านเท่านั้น
2. หลังจากอาร์เรย์ถูกแปลงเป็นรายการแล้วรองรับวิธีการเพิ่มการลบการแก้ไขและการค้นหา
ผ่านตัวสร้าง ArrayList ให้แปลงค่าผลตอบแทนของ Arrays.asList(strArray) จาก java.util.Arrays.ArrayList เป็น java.util.ArrayList
รหัสคีย์: ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
Void Private TestArraycastToListright () {String [] strarray = สตริงใหม่ [2]; ArrayList <String> list = new ArrayList <String> (array.aslist (strarray)); list.add ("1"); System.out.println (รายการ); -ผลการดำเนินการ: เพิ่มองค์ประกอบ "1" สำเร็จ
[null, null, 1]
สถานการณ์การใช้งาน: หลังจากแปลงอาร์เรย์เป็นรายการคุณต้องเพิ่มลบแก้ไขและตรวจสอบรายการ สามารถใช้งานได้หากจำนวนข้อมูลในรายการไม่ใหญ่
3. ผ่านการรวบรวมคลาสคอลเลกชันคลาส Addall () วิธี (มีประสิทธิภาพมากที่สุด)
แปลงผ่าน Collections.addAll(arrayList, strArray) สร้างรายการความยาวเท่ากันตามความยาวของอาร์เรย์จากนั้นแปลงองค์ประกอบในอาร์เรย์เป็นไบนารีผ่านวิธี Collections.addAll() แล้วเพิ่มลงในรายการ นี่เป็นวิธีที่มีประสิทธิภาพที่สุด
รหัสคีย์:
ArrayList <String> arrayList = new ArrayList <String> (strarray.length); collections.addall (ArrayList, Strarray);
ทดสอบ:
Void Private TestArraycastToListefficient () {String [] strarray = สตริงใหม่ [2]; ArrayList <String> arrayList = new ArrayList <String> (strarray.length); คอลเลกชัน Addall (ArrayList, Strarray); arraylist.add ("1"); System.out.println (ArrayList); -ผลการดำเนินการ: นอกจากนี้ยังประสบความสำเร็จในการต่อท้ายองค์ประกอบ "1"
[null, null, 1]
สถานการณ์การใช้งาน: หลังจากแปลงอาร์เรย์เป็นรายการคุณต้องเพิ่มลบแก้ไขและตรวจสอบรายการ เมื่อปริมาณข้อมูลของรายการมีขนาดใหญ่เป็นที่ต้องการใช้ซึ่งสามารถปรับปรุงความเร็วในการดำเนินการ
หมายเหตุ: แนบซอร์สโค้ดของ Collections.addAll() วิธี:
สาธารณะคงที่ <t> บูลีน Addall (คอลเลกชัน <? super t> c, t ... องค์ประกอบ) {boolean result = false; สำหรับ (องค์ประกอบ t: องค์ประกอบ) ผลลัพธ์ | = c.add (องค์ประกอบ); // ผลลัพธ์และ c.add (องค์ประกอบ) bitwise หรือการดำเนินการจากนั้นกำหนดค่าให้กับผลลัพธ์ผลตอบแทนผลลัพธ์; -สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com