มีความแตกต่างระหว่างคอลเลกชันที่เรียงลำดับและคอลเลกชันที่สั่งซื้อหรือไม่?
มีความแตกต่างระหว่างคอลเลกชันที่เรียงลำดับและคอลเลกชันที่สั่งซื้อหรือไม่?
คำตอบ:
สั่งซื้อคอลเลกชันหมายความว่าองค์ประกอบของคอลเลกชันที่มีคำสั่งที่เฉพาะเจาะจง คำสั่งไม่ขึ้นอยู่กับค่า รายการเป็นตัวอย่าง
เรียงคอลเลกชันหมายความว่าไม่เพียง แต่คอลเลกชันมีคำสั่ง แต่คำสั่งที่ขึ้นอยู่กับค่าขององค์ประกอบ SortedSetเป็นตัวอย่าง
ในทางตรงกันข้ามคอลเลกชันที่ไม่มีคำสั่งใด ๆสามารถรักษาองค์ประกอบตามลำดับใด ๆ ชุดเป็นตัวอย่าง
คอลเลกชันที่เรียงลำดับจะรักษาลำดับขององค์ประกอบตามลำดับที่คุณใส่ / ลบออกจากคอลเลกชัน
คอลเลกชันที่เรียงลำดับจะช่วยให้องค์ประกอบถูกจัดเรียงตามเกณฑ์การเรียง
Java ใช้ "คอลเลกชันที่สั่งซื้อ" เพื่อหมายถึงคอลเล็กชันเช่น List โดยที่ (ไม่เหมือน HashSet) คอลเล็กชันจะจดจำลำดับขององค์ประกอบที่ควรจะอยู่ดังนั้นจึงสามารถเพิ่มองค์ประกอบลงในคอลเล็กชันได้ที่ "สถานที่" ที่เฉพาะเจาะจงตามลำดับ .
Java ใช้ "sorted collection" เพื่อหมายถึงคอลเล็กชันเช่น SortedSet โดยที่ (ไม่เหมือน List) ลำดับที่ตัววนซ้ำข้ามคอลเลกชันจะเป็นไปตามตัวเปรียบเทียบที่ระบุหรือลำดับตามธรรมชาติขององค์ประกอบ
ดังนั้นความแตกต่างก็คือการจัดลำดับขึ้นอยู่กับค่า ("เรียงลำดับ") หรือเป็นคุณสมบัติที่องค์ประกอบมีค่าโดยไม่ขึ้นกับค่า ("เรียงลำดับ")
OrderedDict
ในหลาม แต่ใน .NET อินเตอร์เฟซสำหรับ "เรียง" IOrderedEnumerable
นับเรียกว่า ดังนั้นมันขึ้นอยู่กับ บอกเพียงว่า ..
ใช่แม้ว่าแนวคิดจะคล้ายกัน
List
เป็นคอลเลกชันที่เรียงลำดับ: แต่ละองค์ประกอบมีดัชนีซึ่งสร้างลำดับขององค์ประกอบ แต่โดยปกติจะไม่เกี่ยวข้องกับคุณสมบัติขององค์ประกอบใด ๆ
SortedMap
และSortedSet
เป็นคอลเลกชันที่เรียงลำดับซึ่งหมายความว่าการวนซ้ำผ่านคอลเลกชันจะเกิดขึ้นตามลำดับที่ได้มาจากองค์ประกอบต่างๆ ตัวอย่างเช่นหากคุณมีSortedSet<String>
สตริงจะถูกจัดเรียงตามลำดับการจัดเรียงศัพท์
สามารถจัดเรียงคอลเล็กชันที่สั่งซื้อได้ แต่ไม่จำเป็นต้องเป็น (เช่นหลังการใช้งานCollections.sort()
) เมื่อลำดับภายนอกเหมือนกันกับลำดับการจัดเรียงขององค์ประกอบ คอลเล็กชันที่เรียงลำดับจะเรียงลำดับโดยปริยายเสมอ (กล่าวคือมักจะมีองค์ประกอบ "แรก" และจะเหมือนกันเสมอตราบใดที่คุณไม่ได้เพิ่มอีกอันที่เล็กกว่า)
คอลเลกชันที่เรียงลำดับคือคอลเล็กชันที่ติดตามดัชนีที่ต่อเนื่องกันซึ่งทุกองค์ประกอบจะถูกแทรกเข้าไป
คอลเลกชันที่เรียงลำดับคือคอลเลกชันที่เรียงลำดับเมื่อลำดับขึ้นอยู่กับค่าขององค์ประกอบที่จะแทรกตลอดการใช้อินเทอร์เฟซเปรียบเทียบซึ่งให้วิธีการกำหนดเกณฑ์การเรียงลำดับแก่คุณ
ฉันหวังว่ามันจะช่วยได้
การจัดเรียงจะบ่งบอกถึงการเรียงลำดับตามการใช้งานตัวเปรียบเทียบหรือตัวเปรียบเทียบ คำสั่งจะบอกเป็นนัยว่าเป็นไปตามคำสั่งแทรกหรือคำจำกัดความอื่น ๆ ของคำสั่งที่สอดคล้องและกำหนดไว้ แต่โดยพลการ
ดังนั้นรายการสตริงที่เรียงลำดับจะถูกจัดเรียงตามเมธอด String.compareTo รายการอาจมีรายการสตริงที่แทรกตามลำดับที่กำหนด แต่คำสั่งนั้นจะยังคงเหมือนเดิม
แน่นอนว่ามีวิธีการในคลาส Collections ในการเรียงลำดับรายการ
คอลเลกชันที่จัดเรียงมักจะหมายถึงองค์ประกอบที่เรียงลำดับจากค่า minimun เป็นค่าสูงสุดหรือในทางกลับกันขึ้นอยู่กับแอตทริบิวต์ขององค์ประกอบที่อัลกอริทึมทำงาน
สำหรับคอลเลกชัน interger การจัดเรียงอาจเป็นจากจำนวนขั้นต่ำไปจนถึงจำนวนสูงสุดสำหรับการรวบรวมบุคคลอาจมีการเรียงลำดับตามความสูงของบุคคลหรือน้ำหนักของบุคคลเป็นต้น
เมื่อพูดถึง order มักจะหมายถึงลำดับของการแทรก ลำดับอาจมีการเปลี่ยนแปลงหลังจากการเรียงลำดับ
คอลเลกชันที่เรียงลำดับกับคอลเล็กชันที่สั่งซื้อ
1. คอลเลกชันที่เรียงลำดับ
คอลเลกชันที่เรียงลำดับกำลังจัดเรียงคอลเล็กชันโดยใช้คุณสมบัติการเรียงลำดับที่จัดเตรียมโดยเฟรมเวิร์กคอลเลกชัน Java การเรียงลำดับเกิดขึ้นในหน่วยความจำของ JVM ซึ่งเรียกใช้ Hibernate หลังจากข้อมูลถูกอ่านจากฐานข้อมูลโดยใช้ตัวเปรียบเทียบจาวา
หากคอลเล็กชันของคุณมีขนาดไม่ใหญ่การจัดเรียงจะเป็นวิธีที่มีประสิทธิภาพมากขึ้น เนื่องจากมันเกิดขึ้นในหน่วยความจำ jvm มันอาจทำให้เกิดข้อผิดพลาด Out of Memory
2. การรวบรวมคำสั่งซื้อ
คอลเลกชันใบสั่งคือการเรียงลำดับคอลเลกชันโดยระบุคำสั่งตามลำดับในแบบสอบถามสำหรับการเรียงลำดับคอลเล็กชันนี้เมื่อเรียกค้น หากคอลเล็กชันของคุณมีขนาดใหญ่มากการจัดเรียงจะเป็นวิธีที่มีประสิทธิภาพมากขึ้น รวดเร็วเมื่อเทียบกับคอลเลคชันแบบเรียงลำดับ
IOrderedEnumerable
(สิ่งที่น่าตลกคือมันไม่ค่อยสอดคล้องกันใน. NET พจนานุกรมที่เกี่ยวข้องกับ "ลำดับการแทรก" ใน. NETOrderedDictionary
ซึ่งบางคนเชื่อว่าเป็นการเรียกชื่อผิดเมื่อเทียบกับคำพูดIndexedDictionary
) . ใช่ในโลก java (ส่วนใหญ่อยู่ที่อื่นด้วย) พวกเขาหมายถึงสิ่งที่คุณมีในคำตอบ สำหรับข้อมูลเพิ่มเติมโปรดดูที่นี่