โค้ดยิม/จาวาบล็อก/สุ่ม/วิธีการ Arrays.asList() ใน Java
John Squirrels
ระดับ
San Francisco

วิธีการ Arrays.asList() ใน Java

เผยแพร่ในกลุ่ม
ผู้เริ่มต้นจำนวนมากสับสนแนวคิดของเมธอด Arrays.asList()กับโครงสร้างข้อมูล ArrayList แม้ว่าพวกเขาอาจดูและฟังดูคล้ายกัน แต่ทั้งสองนี้แตกต่างกันโดยสิ้นเชิงเมื่อนำไปใช้งาน ในโพสต์นี้ เราจะอธิบายถึงการใช้เมธอดArrays.asList()ขั้นพื้นฐาน และจะอธิบายถึงความสับสนที่เกี่ยวข้องกับเมธอดนี้

เหตุใดจึงใช้ Arrays.asList ()

หากคุณมี Array ที่คุณต้องการเปลี่ยนเป็นรายการjava.util.Arraysจะมี wrapper Arrays.asList()เพื่อตอบสนองวัตถุประสงค์นี้ พูดง่ายๆ วิธีนี้ใช้อาร์เรย์เป็นพารามิเตอร์และส่งกลับรายการ ส่วนใหญ่ของ API แพลตฟอร์ม Java ได้รับการพัฒนาก่อนที่จะมีการนำเสนอเฟรมเวิร์กคอลเลกชัน ดังนั้น ในบางครั้ง คุณอาจต้องแปลระหว่างอาร์เรย์แบบดั้งเดิมกับคอลเล็กชันที่ทันสมัยกว่า ฟังก์ชันนี้ทำหน้าที่เป็นตัวเชื่อมระหว่าง Collections และ API ของ Arrayวิธีการ Arrays.asList() ใน Java - 1

ตัวอย่าง

ดูตัวอย่างต่อไปนี้:
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);

	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
เอาท์พุต:
รายการ : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet ไม่รักษาลำดับ

Arrays.asList() และ ArrayList ต่างกันอย่างไร

เมื่อคุณเรียกใช้ เมธอด Arrays.asList()บนอาร์เรย์ วัตถุที่ส่งคืนไม่ใช่ArrayList ( การนำอาร์เรย์ที่ปรับขนาดได้ของ อินเทอร์เฟซ รายการ ) เป็นวัตถุมุมมองที่มีเมธอดget()และset()ที่เข้าถึงอาร์เรย์พื้นฐาน เมธอดทั้งหมดที่จะเปลี่ยนขนาดของอาร์เรย์ เช่นadd()หรือremove ()ของ iterator ที่เกี่ยวข้องจะส่งUnsupportedOperationException เหตุผลที่โปรแกรมจาวาคอมไพล์สำเร็จแต่ให้ข้อยกเว้นรันไทม์ก็คือ เห็นได้ชัดว่า"รายการ"ถูกส่งกลับเนื่องจากArrays.asList() . ในกรณีที่การดำเนินการเพิ่ม/ลบทั้งหมดได้รับอนุญาต แต่เนื่องจากโครงสร้างข้อมูลพื้นฐานเป็น"อาร์เรย์" ที่ปรับขนาดไม่ได้ ดังนั้น ข้อยกเว้นจึงเกิดขึ้นในขณะรันไทม์ นี่คือตัวอย่างที่แสดงให้เห็นว่ามีลักษณะอย่างไร:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);

	// using getters and setters to randomly access the list
	diceRollList.set(5, 6);
	diceRollList.set(0, 1);
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);

	diceRollList.add(7); // Add a new Integer to the list
    }
}
เอาท์พุต:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] ข้อยกเว้นในเธรด "main" java.lang.UnsupportedOperationException ที่ java.util.AbstractList.add(AbstractList. java:148) ที่ java.util.AbstractList.add(AbstractList.java:108) ที่ ArraysAsListDemo.main (ArraysAsListDemo.java:20)

ตัวอย่างการใช้เมธอด asList()

ใน Java SE 5.0 เมธอด asList()ถูกประกาศให้มีจำนวนตัวแปรของอาร์กิวเมนต์ แทนที่จะส่งอาร์เรย์ คุณยังสามารถส่งองค์ประกอบแต่ละรายการได้ด้วย ตัวอย่างเช่น:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
เอาท์พุต:
[ฤดูหนาว ฤดูร้อน ฤดูใบไม้ผลิ ฤดูใบไม้ร่วง] [1, 3, 5, 7, 9]

บทสรุป

ในการใช้Arrays.asList()คุณต้องจำไว้ว่ามันเป็นเพียงวิธีการห่อหุ้มสำหรับยูทิลิตี้ของคุณเอง อย่าผสมกับ ArrayList และโปรดจำไว้ว่าจะส่งกลับ "รายการ" ในตอนแรก คุณอาจพบข้อผิดพลาดในการดำเนินการฟังก์ชันเพิ่ม/ลบ แต่ทุกอย่างจะหายไปได้ด้วยการฝึกฝนและความเข้าใจอย่างสม่ำเสมอ เข้าสู่ IDE ของคุณและรับประสบการณ์การเรียนรู้ที่ยอดเยี่ยม!
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ