ความแตกต่างระหว่างCollection
และList
ใน Java คืออะไร? เมื่อใดที่ฉันควรใช้
ความแตกต่างระหว่างCollection
และList
ใน Java คืออะไร? เมื่อใดที่ฉันควรใช้
คำตอบ:
ก่อนปิดกเป็นList
Collection
มันเป็นผู้เชี่ยวชาญCollection
อย่างไรก็ตาม
Collection
เป็นเพียงแค่นั่นคือชุดของรายการ คุณสามารถเพิ่มสิ่งต่าง ๆ นำสิ่งต่าง ๆ วนซ้ำสิ่งต่างๆและสอบถามว่ามีสิ่งใดอยู่ในนั้น
List
เพิ่มข้อมูลเกี่ยวกับลำดับที่กำหนดไว้ของสิ่งที่จะมัน: คุณจะได้รับองค์ประกอบที่ตำแหน่งnคุณสามารถเพิ่มองค์ประกอบที่ตำแหน่งnคุณสามารถลบองค์ประกอบที่ตำแหน่งn
ใน a Collection
คุณไม่สามารถทำได้: "องค์ประกอบที่ 5 ในคอลเลกชันนี้" ไม่ได้ถูกกำหนดเพราะไม่มีคำสั่งที่กำหนดไว้
มีคอลเล็คชั่นพิเศษอื่น ๆ เช่นกันตัวอย่างเช่นSet
ซึ่งเพิ่มฟีเจอร์ที่มันจะไม่มีองค์ประกอบเดียวกันสองครั้ง
Collection
เป็นอินเตอร์เฟสรูทไปยังลำดับชั้น Java Collections List
เป็นอินเทอร์เฟซย่อยหนึ่งที่กำหนดคอลเลกชันที่สั่งซื้ออินเทอร์เฟซย่อยอื่น ๆ Queue
ซึ่งโดยทั่วไปจะเก็บองค์ประกอบพร้อมสำหรับการประมวลผล (เช่นกองซ้อน )
แผนภาพต่อไปนี้แสดงให้เห็นถึงความสัมพันธ์ระหว่างประเภทคอลเลกชัน java ที่แตกต่างกัน:
Map
Collection
Java API เป็นคำตอบที่ดีที่สุด
ชุด
อินเตอร์เฟสรูทในลำดับชั้นการรวบรวม คอลเลกชันแสดงถึงกลุ่มของวัตถุที่เรียกว่าองค์ประกอบ คอลเลกชันบางอย่างอนุญาตให้ใช้องค์ประกอบที่ซ้ำกันและอื่น ๆ ไม่ได้ บางคนได้รับคำสั่งและคนอื่น ๆ ไม่ได้สั่ง JDK ไม่ได้จัดให้มีการใช้งานโดยตรงของอินเทอร์เฟซนี้: มันให้การใช้งานของอินเทอร์เฟซที่เฉพาะเจาะจงมากขึ้นเช่นการตั้งค่าและรายการ อินเทอร์เฟซนี้มักจะใช้ในการส่งผ่านคอลเลกชันไปรอบ ๆ และจัดการกับพวกเขาที่ต้องการทั่วไปสูงสุด
รายการ (ขยายการรวบรวม)
คอลเลกชันที่ได้รับคำสั่ง (หรือเรียกว่าลำดับ) ผู้ใช้ของอินเทอร์เฟซนี้มีการควบคุมที่ถูกต้องแม่นยำว่าส่วนใดของรายการที่แทรกอยู่ในรายการ ผู้ใช้สามารถเข้าถึงองค์ประกอบตามดัชนีจำนวนเต็ม (ตำแหน่งในรายการ) และค้นหาองค์ประกอบในรายการ
ปกติแล้วรายการจะอนุญาตให้มีองค์ประกอบที่ซ้ำกัน โดยทั่วไปแล้วรายการจะอนุญาตให้มีคู่ขององค์ประกอบ e1 และ e2 เช่นนั้น e1.equals (e2) และพวกเขามักจะอนุญาตให้มีองค์ประกอบที่เป็นโมฆะหลายรายการหากพวกเขาอนุญาตให้องค์ประกอบที่เป็นโมฆะทั้งหมด ไม่น่าเป็นไปได้ที่บางคนอาจต้องการใช้รายการที่ห้ามซ้ำโดยโยนข้อยกเว้นรันไทม์เมื่อผู้ใช้พยายามแทรกพวกเขา แต่เราคาดว่าการใช้งานนี้จะหายาก
รายการและชุดเป็นสองกลุ่มย่อยของการรวบรวม
ในรายการข้อมูลจะเรียงตามลำดับเฉพาะ
ในการตั้งค่ามันไม่สามารถมีข้อมูลเดียวกันสองครั้ง
ในการรวบรวมข้อมูลมันจะเก็บข้อมูลโดยไม่มีคำสั่งซื้อเฉพาะและสามารถมีข้อมูลที่ซ้ำกัน
คอลเลกชันเป็นอินเทอร์เฟซระดับสูงที่อธิบายถึงวัตถุ Java ที่สามารถมีคอลเลกชันของวัตถุอื่น ๆ ไม่เฉพาะเจาะจงมากเกี่ยวกับวิธีการเข้าถึงไม่ว่าจะมีสำเนาของวัตถุเดียวกันหลายชุดในคอลเลกชันเดียวกันหรือไม่หรือว่าลำดับสำคัญหรือไม่ รายการเป็นชุดของวัตถุที่ได้รับคำสั่งโดยเฉพาะ หากคุณใส่วัตถุลงในรายการตามลำดับเฉพาะวัตถุเหล่านั้นจะอยู่ในลำดับนั้น
และการตัดสินใจว่าจะใช้อินเทอร์เฟซทั้งสองนี้มีความสำคัญน้อยกว่าการตัดสินใจว่าการใช้งานที่เป็นรูปธรรมที่คุณใช้คืออะไร สิ่งนี้จะมีผลกระทบต่อเวลาและประสิทธิภาพของโปรแกรมของคุณ ตัวอย่างเช่นถ้าคุณต้องการรายการคุณสามารถใช้ ArrayList หรือ LinkedList ซึ่งแต่ละรายการจะมีความหมายสำหรับแอปพลิเคชัน สำหรับประเภทคอลเลกชันอื่น ๆ (เช่นชุด) จะมีการพิจารณาในลักษณะเดียวกัน
คอลเลกชันเป็นอินเทอร์เฟซ Super ของรายการดังนั้นทุกรายการ Java จึงเป็นตัวอย่างของการรวบรวม คอลเลกชันนั้นสามารถทำซ้ำได้ตามลำดับ (และไม่เรียงตามลำดับ) ในขณะที่รายการอนุญาตให้เข้าถึงองค์ประกอบที่ตำแหน่งที่แน่นอนผ่านget(int index)
วิธีการ
คอลเลกชันเป็นอินเทอร์เฟซหลักของลำดับชั้นของคอลเลกชัน Java และรายการ (ลำดับ) เป็นหนึ่งในอินเทอร์เฟซย่อยที่กำหนดคอลเลกชันที่ได้รับคำสั่ง