ArrayLists เป็นหัวข้อที่กำลังได้รับความนิยมใน Java พวกมันให้ประโยชน์มากมายแก่คุณมากกว่าอาร์เรย์มาตรฐาน ArrayLists ช่วยให้คุณสามารถจัดเก็บวัตถุในแถวได้อย่างมีประสิทธิภาพ และล้างวัตถุออกเมื่อไม่ต้องการ นอกจากนี้ยังช่วยให้คุณดำเนินการมาตรฐานในรายการของคุณ เช่น การเรียงลำดับและการค้นหา หากคุณต้องใช้อาร์เรย์มาตรฐาน คุณจะต้องเขียนตรรกะของคุณเองสำหรับการดำเนินการเหล่านี้ ซึ่งต้องใช้เวลาและการดูแลเพิ่มเติม
ป>
เนื่องจากคุณประโยชน์มากมาย ArrayLists จึงมีแอปพลิเคชันในหลากหลายกรณี อย่างไรก็ตาม การดำเนินการที่สำคัญที่ไม่ได้มาพร้อมกับ ArrayLists คือการพิมพ์ ArrayLists สามารถประกอบด้วยประเภทข้อมูลมาตรฐานและดั้งเดิม (เช่น จำนวนเต็มและสตริง) หรือประเภทข้อมูลขั้นสูง เช่น คลาสแบบกำหนดเอง ในแต่ละกรณีนี้ การพิมพ์ ArrayList จำเป็นต้องมีขั้นตอนที่แตกต่างกัน
ป>
ในบทความนี้ เราจะดูสามวิธีแรกในการพิมพ์ ArrayList ใน Java ซึ่งครอบคลุม ArrayLists สองประเภทที่เรากล่าวถึงข้างต้น เพื่อเป็นการไม่ให้เสียเวลา มาเริ่มกันเลย!
พิมพ์ Java ArrayList:สามวิธี
ตามที่กล่าวไว้ข้างต้น ArrayLists มีสองประเภท:ประเภทหนึ่งประกอบด้วยวัตถุที่มีประเภทข้อมูลพื้นฐานและเรียบง่าย (เช่นจำนวนเต็มและจำนวนลอย) และอีกประเภทหนึ่งประกอบด้วยวัตถุที่สร้างอินสแตนซ์ผ่านคลาสที่กำหนดเอง มีหลายวิธีในการพิมพ์ ArrayLists ทั้งสองประเภทนี้
ป>
ต่อไปนี้เป็นวิธีสามอันดับแรกในการพิมพ์ ArrayList ใน Java:
- การใช้ for วนซ้ำ
- การใช้คำสั่ง println
- การใช้ toString() การนำไปใช้
วิธีที่ 1:การใช้ for Loop
for loop เป็นหนึ่งในวิธีที่ง่ายที่สุดในการวนซ้ำรายการหรืออาร์เรย์ วิธีการนี้ทำงานได้ดีกับอาร์เรย์แบบธรรมดาและ ArrayLists เหมือนกัน เนื่องจากการวนซ้ำรายการทั้งหมดทีละรายการทำให้คุณสามารถจัดการแต่ละรายการได้ตามลำดับ
ป>
เมธอดนี้ช่วยให้คุณกำหนดการใช้งานเฉพาะสำหรับแต่ละองค์ประกอบได้ ต่อไปนี้เป็นไวยากรณ์ของ for loop:
ป>
for (int i=0; i<arr.size(); i++) {
// Assuming arr is an ArrayList object
int current = arr.get(i);
// Do something with the current element here
} ตอนนี้เรามาดูวิธีการทั่วไปบางประการที่สามารถใช้ for loop เพื่อสำรวจผ่านอาร์เรย์ของอ็อบเจ็กต์:
สำหรับตัวอย่างลูป
คุณสามารถใช้ for loop เพื่อพิมพ์องค์ประกอบทั้งหมดของ ArrayList:
ป>
ArrayList<Integer> arr = new ArrayList<>();
arr.add(3);
arr.add(4);
arr.add(5);
arr.add(6);
for (int i=0; i<arr.size(); i++) {
int curr = arr.get(i);
System.out.println(curr);
}
หากต้องการยกระดับนี้ คุณสามารถกำหนดกรณีเฉพาะสำหรับแต่ละองค์ประกอบตามเงื่อนไขใดก็ได้:
ป>
ArrayList arr = new ArrayList<>();
arr.add(3);
arr.add(5l);
arr.add("Hello World!");
for (int i=0; i<arr.size(); i++) {
if (arr.get(i) instanceof Integer)
System.out.println(arr.get(i) + " is a number");
else if (arr.get(i) instanceof String)
System.out.println(arr.get(i) + " is a string");
else if (arr.get(i) instanceof Long)
System.out.println(arr.get(i) + " is a long");
} เมื่อใดจึงควรใช้วิธีนี้
for loop เหมาะที่สุดสำหรับสถานการณ์เมื่อคุณมีชุดองค์ประกอบที่ค่อนข้างสั้นและประเภทขององค์ประกอบไม่แตกต่างกันมากนัก หากคุณมีรายการ 20 รายการที่เป็นจำนวนเต็ม (int) หรือสตริง for loop คือหนทางที่จะไป หากคุณมีรายการมากกว่า 100 รายการที่สามารถเป็นสตริง, int, บูลีนหรืออย่างอื่น for loop จะยุ่งยากเกินไปที่จะใช้
วิธีที่ 2:การใช้คำสั่ง println
ไวยากรณ์สำหรับวิธีนี้เรียบง่าย:
เหตุผลที่วิธีนี้ใช้ได้ผลก็คือประเภทข้อมูลดั้งเดิมทั้งหมดสามารถพิมพ์ไปยังอุปกรณ์เอาท์พุตมาตรฐานได้โดยตรง ไม่จำเป็นต้องแยกวิเคราะห์เป็นรูปแบบที่สามารถพิมพ์ได้ ข้อมูลอื่นๆ เช่น ที่จัดเก็บไว้ในอินสแตนซ์ของคลาสที่กำหนดเอง ไม่สามารถแยกวิเคราะห์ด้วยคำสั่ง println โดยตรง ดังนั้นวิธีนี้จึงไม่ทำงานในกรณีนี้
หากคุณกำลังพยายามพิมพ์ ArrayList จำนวนเต็มแบบง่าย ต่อไปนี้คือวิธีดำเนินการ:
หากคุณกำลังพยายามพิมพ์ ArrayList ที่ต่างกันนั่นก็ใช้ได้เช่นกัน:
วิธีนี้เหมาะที่สุดสำหรับสถานการณ์เมื่อคุณมีรายการสั้นๆ ง่ายๆ และคุณต้องการพิมพ์ออกมาเพื่อวัตถุประสงค์ในการแก้ไขจุดบกพร่อง โปรดทราบว่าวิธีนี้ไม่ยืดหยุ่นเหมือนวิธีก่อนหน้า และคุณไม่สามารถจัดรูปแบบเนื้อหาที่พิมพ์ไปยังอุปกรณ์ส่งออกได้
นอกจากนี้ หากรายการมีข้อมูลที่ไม่ใช่ข้อมูลพื้นฐาน ค่าของข้อมูลจะไม่ถูกพิมพ์ไปยังอุปกรณ์ ตัวชี้ไปยังตำแหน่งในหน่วยความจำจะถูกพิมพ์แทน
วิธีนี้ไม่มีข้อบกพร่องเหมือนวิธีก่อนหน้า สาเหตุที่ไม่สามารถพิมพ์ออบเจ็กต์ที่ไม่ใช่แบบดั้งเดิมไปยังเอาต์พุตได้โดยตรงก็คือคอมไพลเลอร์ไม่ทราบวิธีการพิมพ์ toString() วิธีการช่วยให้คุณสามารถบอกคอมไพเลอร์ถึงวิธีการพิมพ์อ็อบเจ็กต์ของคลาสไปยังบรรทัดคำสั่ง
เรามาเรียนคลาส Foo จากตัวอย่างสุดท้ายกันดีกว่า:
เพื่อให้เป็นมิตรกับการพิมพ์ คุณจะต้องแทนที่และกำหนด toString() วิธีการในคำจำกัดความของคลาส:
ตอนนี้ถ้าคุณลองและสร้างอินสแตนซ์ของ Foo:
และพิมพ์:
คุณจะได้รับผลลัพธ์ที่คุณกำหนดไว้ก่อนหน้านี้:
การแก้ไขเล็กๆ น้อยๆ นี้สามารถใช้ร่วมกับเมธอด println เพื่อพิมพ์ ArrayLists ทุกประเภทได้อย่างง่ายดายและรวดเร็ว
ลองใช้ตัวอย่างสุดท้ายจากวิธีที่ 2 และทำให้เป็นมิตรกับการพิมพ์:
การเปลี่ยนแปลงเดียวที่คุณต้องทำที่นี่คือการเพิ่ม toString() คำจำกัดความในคลาส Foo:
"อาชีพกรรมเข้ามาในชีวิตของฉันเมื่อฉันต้องการมันมากที่สุดและช่วยให้ฉันเข้ากับหลักสูตรฝึกหัดได้อย่างรวดเร็ว สองเดือนหลังจากสำเร็จการศึกษา ฉันพบงานในฝันที่สอดคล้องกับค่านิยมและเป้าหมายในชีวิตของฉัน!"
Venus วิศวกรซอฟต์แวร์ที่ Rockbot
ค้นหาการแข่งขัน Bootcamp ของคุณ
วิธีการนี้เหมาะสำหรับสถานการณ์ที่คุณต้องการพิมพ์ ArrayLists ที่ต่างกัน หรือ ArrayList ที่เป็นเนื้อเดียวกันที่ประกอบด้วยคลาสแบบกำหนดเอง คำจำกัดความของเมธอดเดียวในคลาสช่วยให้คุณประหยัดปัญหาที่คุณจะพบเมื่อใช้ for loop
อย่างไรก็ตาม วิธีการนี้อาจดูเหมือนใช้มากเกินไปในสถานการณ์ที่ง่ายกว่า หากคุณมีรายการองค์ประกอบเพียงเล็กน้อย คุณสามารถลองใช้วิธี for loop เพื่อความสะดวกและความเรียบง่ายในทางตรรกะ
การพิมพ์ Java ArrayList ไม่ใช่งานที่ตรงไปตรงมา ยิ่งเนื้อหาของ ArrayList มีไดนามิกมากเท่าไร การพิมพ์รายการไปยังเอาต์พุตมาตรฐานก็จะยิ่งยากขึ้นเท่านั้น
ในบทความนี้ เราได้กล่าวถึงวิธีการพิมพ์ ArrayList สามวิธี เราพิจารณาไวยากรณ์ ตัวอย่าง และสถานการณ์ที่เหมาะสมที่สุด สำหรับแหล่งข้อมูล Java ขั้นสูงเพิ่มเติม โปรดสำรวจคำแนะนำของเราเกี่ยวกับวิธีเรียนรู้ Java05รหัส> คำสั่งสามารถใช้ได้โดยตรงในกรณีของ ArrayLists ที่สร้างโดยใช้ชนิดข้อมูลดั้งเดิม ชนิดข้อมูลพื้นฐานใน Java ได้แก่ string, integer, float, long, double และ boolean หากรายการประกอบด้วยข้อมูลที่ไม่ตรงกับประเภทเหล่านี้ จะไม่สามารถพิมพ์ด้วยวิธีนี้ได้
ป> System.out.println(arr);
// Assuming arr is an ArrayList object
ตัวอย่างการพิมพ์
ArrayList<Integer> arr = new ArrayList<>();
arr.add(5);
arr.add(4);
arr.add(6);
System.out.println(arr);
# => [5, 4, 6]
ป> ArrayList<> arr = new ArrayList<>();
arr.add(7);
arr.add("Foo");
arr.add(12l);
System.out.println(arr);
# => [7, Foo, 12] เมื่อใดจึงควรใช้วิธีนี้
ป>
ป> class Foo {
int bar;
public Foo(int bar){ this.bar = bar; };
}
ArrayList<> arr = new ArrayList<>();
arr.add(4);
arr.add(new Foo(40));
System.out.println(arr);
# => [4, 34n2dsf@Foo]; วิธีที่ 3:การใช้วิธี toString()
ป>
ป> class Foo {
int bar;
public Foo(int bar){ this.bar = bar; };
}
ป> class Foo {
int bar;
public Foo(int bar){ this.bar = bar; };
public String toString() {
return "Bar: " + String.valueOf(bar);
}
}
ป> ตัวอย่าง toString()
ป> class Foo {
int bar;
public Foo(int bar){ this.bar = bar; };
}
ArrayList<> arr = new ArrayList<>();
arr.add(4);
arr.add(new Foo(40));
System.out.println(arr);
# => [4, Foo@2a139a55];
ป> 
class Foo {
int bar;
public Foo(int bar){ this.bar = bar; };
public String toString(){
return "Value: " + String.valueOf(bar);
}
}
Now, the println statement will give the desired output:
// # => [4, Value: 40] เมื่อใดจึงควรใช้วิธีนี้
ป> บทสรุป
19รหัส> คำสั่งสามารถครอบคลุมกรณีส่วนใหญ่ แต่คุณอาจต้องใช้ 22 แทนที่เพื่อให้งานเสร็จ
ป>