แปลง ArrayList เป็น Array ใน Java
เมื่อทำงานกับ ArrayList คุณอาจต้องการแปลงเป็นอาร์เรย์ หรือในทางกลับกัน เช่น มีรายการหุ้นในพอร์ตการลงทุนเก็บในอาร์เรย์ ต้องการแปลงเป็น ArrayList
ใน Java เมธอด toArray() ใช้แปลง ArrayList เป็นอาร์เรย์ ส่วน asList() ใช้แปลงอาร์เรย์เป็น ArrayList บทช่วยสอนนี้จะอธิบายพร้อมตัวอย่างทั้ง 2 ทิศทาง
อาร์เรย์และ ArrayList ใน Java
อาร์เรย์ใน Java ใช้จัดเก็บลำดับค่า 0 หรือมากกว่า เช่น รายการขนมในร้าน หรือออเดอร์ในคาเฟ่ อาร์เรย์เก็บชนิดข้อมูลได้ทุกประเภท: float, boolean, string
ตัวอย่างอาร์เรย์:
String[] names = new String[5];
ประกาศอาร์เรย์ names ขนาด 5 ค่า String
ก่อนใช้อาร์เรย์ ต้องประกาศขนาดล่วงหน้า และยากที่จะเปลี่ยนขนาดภายหลัง
นี่คือที่มาของ ArrayList - implementation ของ Java List interface ที่สร้างอาร์เรย์ขยายขนาดได้ (resizable array) เมื่อเพิ่ม/ลบสมาชิก ความจุจะปรับอัตโนมัติ ในบทนี้จะเรียก ArrayList ว่า "ลิสต์" สำหรับความสะดวก
ตัวอย่าง ArrayList:
ArrayList<String> names = new ArrayList<>();
ประกาศ ArrayList names เก็บ String จำนวนไม่จำกัด
แปลง List เป็น Array
ใช้เมธอด list.toArray() เพื่อแปลงลิสต์เป็นอาร์เรย์
สมมติมีลิสต์หุ้นในพอร์ตเกษียณอายุ เก็บใน ArrayList ต้องการแปลงเป็นอาร์เรย์เพราะไม่ตั้งใจเพิ่มหุ้นใหม่:
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
List<String> portfolio = new ArrayList<String>();
portfolio.add("BAM");
portfolio.add("GOOGL");
portfolio.add("SBUX");
String[] newPortfolio = new String[portfolio.size()];
portfolio.toArray(newPortfolio);
System.out.println("Portfolio: " + Arrays.toString(newPortfolio));
}
}
ผลลัพธ์:
Portfolio: [BAM, GOOGL, SBUX]
อธิบายโค้ด:
- Import 3 ไลบรารี: List, Arrays, ArrayList
- ประกาศ ArrayList
portfolioเพิ่มค่า 3 ค่า: BAM, GOOGL, SBUX - สร้างอาร์เรย์
newPortfolioขนาดเท่ากับ portfolio.size() (คือ 3) - ใช้
toArray()แปลง portfolio ให้เป็นอาร์เรย์ แล้วกำหนดให้ newPortfolio - ใช้
Arrays.toString()แปลงอาร์เรย์เป็นข้อความ แล้วพิมพ์
แปลง Array เป็น List
ใช้เมธอด asList() เพื่อแปลงอาร์เรย์เป็น ArrayList
กลับไปที่ตัวอย่างพอร์ตการลงทุน สมมติมีอาร์เรย์หุ้น ต้องการแปลงเป็น ArrayList:
import java.util.Arrays;
import java.util.List;
class Main {
public static void main(String[] args) {
String[] portfolio = {"BAM", "GOOGL", "SBUX"};
List<String> newPortfolio = Arrays.asList(portfolio);
System.out.println("New portfolio: " + newPortfolio);
}
}
ผลลัพธ์:
New portfolio: [BAM, GOOGL, SBUX]
อธิบาย: Import Arrays และ List ประกาศอาร์เรย์ portfolio ใช้ Arrays.asList() แปลงเป็นลิสต์ แล้วเก็บใน newPortfolio พิมพ์ผลลัพธ์
สรุป
เมธอด toArray() ใช้แปลงลิสต์เป็นอาร์เรย์ ส่วน asList() ใช้แปลงอาร์เรย์เป็นลิสต์ บทช่วยสอนนี้อธิบายวิธีแปลงข้อมูลระหว่าง ArrayList และอาร์เรย์ พร้อมอธิบายความแตกต่างหลักของทั้งสอง ตอนนี้คุณพร้อมแปลงข้อมูลสลับกันได้อย่างมืออาชีพแล้ว!