อะไรคือความแตกต่างระหว่าง Collection และ List ใน Java?


153

ความแตกต่างระหว่างCollectionและListใน Java คืออะไร? เมื่อใดที่ฉันควรใช้


รายการส่วนต่อประสานสาธารณะขยายการเก็บ {}
rai.skumar

คำตอบ:


263

ก่อนปิดกเป็นList Collectionมันเป็นผู้เชี่ยวชาญCollectionอย่างไรก็ตาม

Collectionเป็นเพียงแค่นั่นคือชุดของรายการ คุณสามารถเพิ่มสิ่งต่าง ๆ นำสิ่งต่าง ๆ วนซ้ำสิ่งต่างๆและสอบถามว่ามีสิ่งใดอยู่ในนั้น

Listเพิ่มข้อมูลเกี่ยวกับลำดับที่กำหนดไว้ของสิ่งที่จะมัน: คุณจะได้รับองค์ประกอบที่ตำแหน่งnคุณสามารถเพิ่มองค์ประกอบที่ตำแหน่งnคุณสามารถลบองค์ประกอบที่ตำแหน่งn

ใน a Collectionคุณไม่สามารถทำได้: "องค์ประกอบที่ 5 ในคอลเลกชันนี้" ไม่ได้ถูกกำหนดเพราะไม่มีคำสั่งที่กำหนดไว้

มีคอลเล็คชั่นพิเศษอื่น ๆ เช่นกันตัวอย่างเช่นSetซึ่งเพิ่มฟีเจอร์ที่มันจะไม่มีองค์ประกอบเดียวกันสองครั้ง


9
ใช่รายชื่อเป็นความเชี่ยวชาญเฉพาะของคอลเลกชัน (แต่ไม่ได้จัดเรียง) +1
atamanroman

2
รายการใน java ขยายคอลเลกชันเชื่อมต่อและสร้างฟังก์ชั่นการจัดทำดัชนีที่ช่วยในตำแหน่งตามการดึงและการกำจัดพฤติกรรม
frictionlesspulley

188

Collectionเป็นอินเตอร์เฟสรูทไปยังลำดับชั้น Java Collections Listเป็นอินเทอร์เฟซย่อยหนึ่งที่กำหนดคอลเลกชันที่สั่งซื้ออินเทอร์เฟซย่อยอื่น ๆ Queueซึ่งโดยทั่วไปจะเก็บองค์ประกอบพร้อมสำหรับการประมวลผล (เช่นกองซ้อน )

แผนภาพต่อไปนี้แสดงให้เห็นถึงความสัมพันธ์ระหว่างประเภทคอลเลกชัน java ที่แตกต่างกัน:

คอลเลกชัน java


1
ชอบรูปของคุณฉันเห็นมันตอนเตรียม SCJP แต่เกือบลืมทุกอย่างเกี่ยวกับสิ่งเหล่านี้ในวันนี้
Truong Ha

1
ฉันต้องยอมรับว่าภาพนี้ถูกรุกล้ำจากบล็อกนี้ ครั้งแรกที่ผมเห็นแผนภาพเกินไปเช่นนี้ในหนังสือ K & B SCJP
krock

คุณสามารถเรียนรู้ได้มากมายจากใบรับรอง
scjp

ผมเดาไม่ได้เป็นMap Collection
giannis christofakis

7

Java API เป็นคำตอบที่ดีที่สุด

ชุด

อินเตอร์เฟสรูทในลำดับชั้นการรวบรวม คอลเลกชันแสดงถึงกลุ่มของวัตถุที่เรียกว่าองค์ประกอบ คอลเลกชันบางอย่างอนุญาตให้ใช้องค์ประกอบที่ซ้ำกันและอื่น ๆ ไม่ได้ บางคนได้รับคำสั่งและคนอื่น ๆ ไม่ได้สั่ง JDK ไม่ได้จัดให้มีการใช้งานโดยตรงของอินเทอร์เฟซนี้: มันให้การใช้งานของอินเทอร์เฟซที่เฉพาะเจาะจงมากขึ้นเช่นการตั้งค่าและรายการ อินเทอร์เฟซนี้มักจะใช้ในการส่งผ่านคอลเลกชันไปรอบ ๆ และจัดการกับพวกเขาที่ต้องการทั่วไปสูงสุด

รายการ (ขยายการรวบรวม)

คอลเลกชันที่ได้รับคำสั่ง (หรือเรียกว่าลำดับ) ผู้ใช้ของอินเทอร์เฟซนี้มีการควบคุมที่ถูกต้องแม่นยำว่าส่วนใดของรายการที่แทรกอยู่ในรายการ ผู้ใช้สามารถเข้าถึงองค์ประกอบตามดัชนีจำนวนเต็ม (ตำแหน่งในรายการ) และค้นหาองค์ประกอบในรายการ

ปกติแล้วรายการจะอนุญาตให้มีองค์ประกอบที่ซ้ำกัน โดยทั่วไปแล้วรายการจะอนุญาตให้มีคู่ขององค์ประกอบ e1 และ e2 เช่นนั้น e1.equals (e2) และพวกเขามักจะอนุญาตให้มีองค์ประกอบที่เป็นโมฆะหลายรายการหากพวกเขาอนุญาตให้องค์ประกอบที่เป็นโมฆะทั้งหมด ไม่น่าเป็นไปได้ที่บางคนอาจต้องการใช้รายการที่ห้ามซ้ำโดยโยนข้อยกเว้นรันไทม์เมื่อผู้ใช้พยายามแทรกพวกเขา แต่เราคาดว่าการใช้งานนี้จะหายาก


3

รายการและชุดเป็นสองกลุ่มย่อยของการรวบรวม

ในรายการข้อมูลจะเรียงตามลำดับเฉพาะ

ในการตั้งค่ามันไม่สามารถมีข้อมูลเดียวกันสองครั้ง

ในการรวบรวมข้อมูลมันจะเก็บข้อมูลโดยไม่มีคำสั่งซื้อเฉพาะและสามารถมีข้อมูลที่ซ้ำกัน


2

คอลเลกชันเป็นอินเทอร์เฟซระดับสูงที่อธิบายถึงวัตถุ Java ที่สามารถมีคอลเลกชันของวัตถุอื่น ๆ ไม่เฉพาะเจาะจงมากเกี่ยวกับวิธีการเข้าถึงไม่ว่าจะมีสำเนาของวัตถุเดียวกันหลายชุดในคอลเลกชันเดียวกันหรือไม่หรือว่าลำดับสำคัญหรือไม่ รายการเป็นชุดของวัตถุที่ได้รับคำสั่งโดยเฉพาะ หากคุณใส่วัตถุลงในรายการตามลำดับเฉพาะวัตถุเหล่านั้นจะอยู่ในลำดับนั้น

และการตัดสินใจว่าจะใช้อินเทอร์เฟซทั้งสองนี้มีความสำคัญน้อยกว่าการตัดสินใจว่าการใช้งานที่เป็นรูปธรรมที่คุณใช้คืออะไร สิ่งนี้จะมีผลกระทบต่อเวลาและประสิทธิภาพของโปรแกรมของคุณ ตัวอย่างเช่นถ้าคุณต้องการรายการคุณสามารถใช้ ArrayList หรือ LinkedList ซึ่งแต่ละรายการจะมีความหมายสำหรับแอปพลิเคชัน สำหรับประเภทคอลเลกชันอื่น ๆ (เช่นชุด) จะมีการพิจารณาในลักษณะเดียวกัน


2

คอลเลกชันเป็นอินเทอร์เฟซ Super ของรายการดังนั้นทุกรายการ Java จึงเป็นตัวอย่างของการรวบรวม คอลเลกชันนั้นสามารถทำซ้ำได้ตามลำดับ (และไม่เรียงตามลำดับ) ในขณะที่รายการอนุญาตให้เข้าถึงองค์ประกอบที่ตำแหน่งที่แน่นอนผ่านget(int index)วิธีการ


2

คอลเลกชันเป็นอินเทอร์เฟซหลักของลำดับชั้นของคอลเลกชัน Java และรายการ (ลำดับ) เป็นหนึ่งในอินเทอร์เฟซย่อยที่กำหนดคอลเลกชันที่ได้รับคำสั่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.