1. ภาพรวม
บทความสั้น ๆ นี้จะแสดงวิธีการแปลงระหว่าง Array และ Listโดยใช้ Core Java libraries, Guava หรือ Apache Commons Collections
บทความนี้เป็นส่วนหนึ่งของซีรี่ส์“ Java - Back to Basic” ใน Baeldung
2. แปลงรายการเป็นอาร์เรย์
2.1. ใช้ Plain Java
เริ่มต้นด้วยการแปลงจากListเป็น Array โดยใช้ Java ธรรมดา :
@Test public void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() { List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); Integer[] targetArray = sourceList.toArray(new Integer[0]); }
ทราบว่าtoArray (T ใหม่ [0])เป็นวิธีที่ต้องการจะใช้วิธีการที่ผ่านtoArray (T ใหม่ [ขนาด]) ดังที่ Aleksey Shipilëvพิสูจน์ในบล็อกโพสต์ของเขาดูเหมือนว่าเร็วกว่าปลอดภัยกว่าและสะอาดกว่า
2.2. ใช้ฝรั่ง
ตอนนี้เรามาใช้Guava APIสำหรับการแปลงเดียวกัน:
@Test public void givenUsingGuava_whenListConvertedToArray_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); int[] targetArray = Ints.toArray(sourceList); }
3. แปลง Array เป็นList
3.1. ใช้ Plain Java
เริ่มต้นด้วยโซลูชัน Java ธรรมดาสำหรับการแปลงอาร์เรย์เป็นรายการ :
@Test public void givenUsingCoreJava_whenArrayConvertedToList_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; List targetList = Arrays.asList(sourceArray); }
โปรดทราบว่านี่คือรายการขนาดคงที่ซึ่งจะยังคงได้รับการสนับสนุนโดยอาร์เรย์ หากคุณต้องการArrayListมาตรฐานคุณสามารถสร้างอินสแตนซ์ได้ดังนี้:
List targetList = new ArrayList(Arrays.asList(sourceArray));
3.2. ใช้ฝรั่ง
ตอนนี้เรามาใช้Guava APIสำหรับการแปลงเดียวกัน:
@Test public void givenUsingGuava_whenArrayConvertedToList_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; List targetList = Lists.newArrayList(sourceArray); }
3.3. การใช้ Commons Collections
และสุดท้ายให้ใช้ Apache Commons Collections - CollectionUtils.addAll API เพื่อเติมองค์ประกอบของอาร์เรย์ลงในรายการว่าง:
@Test public void givenUsingCommonsCollections_whenArrayConvertedToList_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; List targetList = new ArrayList(6); CollectionUtils.addAll(targetList, sourceArray); }
4. สรุป
การใช้งานตัวอย่างและตัวอย่างโค้ดเหล่านี้สามารถพบได้บน GitHubซึ่งเป็นโครงการที่ใช้ Maven ดังนั้นจึงควรนำเข้าและเรียกใช้งานได้ง่ายเหมือนเดิม