ความแตกต่างระหว่าง Set และ List ความแตกต่างระหว่าง
ความแตกต่างระหว่างรายการอาร์เรย์และรายการที่เชื่อมโยง
ก่อนที่เราจะได้รับความแตกต่างที่เกิดขึ้นจริงให้เราได้รู้ว่าจริงๆแล้วเป็นอย่างไร
Set คืออะไร?
เราได้เจอแนวความคิดของ Set in mathematics และ Set ที่นี่มากหรือน้อยหมายถึงเหมือนกัน ใช่มันเป็นชุดขององค์ประกอบและในกรณีส่วนใหญ่ชุดขององค์ประกอบที่คล้ายกัน คุณสามารถลองเพิ่มองค์ประกอบเหล่านี้ลงในชุดแล้วลองพิมพ์เพื่อทำความเข้าใจวิธีจัดเก็บข้อมูลจริง
->ป้อนข้อมูลไปยังชุด: 20, 50, 10, 30
เก็บไว้ในชุด 10, 20, 30, 50
องค์ประกอบจะถูกจัดเรียงที่นี่และเก็บไว้ไม่ได้อยู่ในลำดับการแทรก นี่คือหนึ่งในคุณสมบัติของ Set ที่จะเรียงลำดับองค์ประกอบก่อนที่จะจัดเก็บและแน่นอนว่ามีข้อยกเว้นและอย่างใดอย่างหนึ่งคือ LinkedhashSet เนื่องจากมีการจัดเรียงลำดับขององค์ประกอบ
ในแง่คอมพิวเตอร์เครื่อง Set จะมีคุณสมบัติเพิ่มเติมอีกเล็กน้อยเช่น Methods and Inheritance วิธีการเช่นเดียวกับฟังก์ชันและทำงานบางอย่างเช่นการเพิ่มการลบหรือการวนซ้ำผ่านชุดขององค์ประกอบ ส่วนมากของเราเป็นที่รู้จักกันดีของมรดกระยะและมันหมายถึงเดียวกันที่นี่ ใช่เราสามารถสืบทอดวิธีการจากคอลเล็กชันของตนเพื่อให้สามารถใช้กับอินเทอร์เฟซชุด อีกครั้งเรากำลังพูดถึงคำใหม่ i. อี Set Interface และไม่มีอะไรมากไปกว่าทั้งชุดขององค์ประกอบรวมถึง Method
วิธีการใช้งาน?
เพื่อความเข้าใจที่ดีขึ้นเราได้แสดงชุดที่มีไวยากรณ์ จากไวยากรณ์ด้านล่างคุณสามารถระบุชนิดของชุดต่างๆเช่นชุดคำสั่ง HashSet และ TreeSet ได้
import java util *;
public class Setexample {
public void main (String args []) {
int count [] = {34, 22, 10, 60, 30, 22} {25, 17, 76, 12, 88, 57};
Set set = new HashSet ();
ลอง {
สำหรับ (int i = 0; i <5; i ++) {
set เพิ่ม (นับ [ผม]);
}
ระบบ ออก. println (ชุด);
TreeSet sortedSeteg = new TreeSet (ชุด);
ระบบ ออก. println ("นี่เรามีเอาท์พุทเรียงลำดับ:");
ระบบ ออก. println (sortedSeteg);
ระบบ ออก. println ("มองไปที่ส่วนแรก:" + (จำนวนเต็ม) เรียงลำดับตั้งค่าแรก ());
ระบบ ออก. println ("ดูองค์ประกอบสุดท้าย:" + (จำนวนเต็ม) เรียงลำดับสุดท้าย ());
}
catch (Exception e) {}
}
}
ผลลัพธ์ของโค้ดข้างต้นมีดังต่อไปนี้
[25, 17, 76, 12, 88]
ที่นี่เรามีเอาต์พุตเรียงลำดับ:
[12, 17, 25, 76, 88]
ดูองค์ประกอบแรก: 12 > ดูองค์ประกอบสุดท้าย: 88
List คืออะไร?
รายการขยายคอลเล็กชันแบบเดียวกับที่ชุดทำงาน แต่ทำตามลำดับการแทรก คุณลองเพิ่มชื่อต่อไปนี้ลงในรายการและดูวิธีการเพิ่มลงในรายการ
การป้อนข้อมูลลงในรายการ:
John, Nancy, Mary, Alice วิธีเก็บไว้ในรายการ:
John, Nancy, Mary, Alice สังเกตเห็นเพียงลำดับที่ใส่ไว้ คุณสามารถระบุว่า 'John' เป็นองค์ประกอบแรกในอินพุตและเอาท์พุทและตามด้วยลำดับที่เหมือนกันซึ่งใส่ชื่อไว้ เราสามารถพิจารณาคุณสมบัติที่สำคัญอย่างหนึ่งของ List ได้เช่นกัน
การใช้งานอย่างไร?
ให้เราดูตัวอย่างวิธีการของ List เช่น ArrayList และ LinkedList ในรูปแบบด้านล่าง
import java util *;
public class Collectionssample {
public static void main (String [] args) {
รายการ a1 = new ArrayList ();
a1 เพิ่ม (“จอห์น”);
a1 เพิ่ม (“แนนซี่”);
a1 เพิ่ม (“แมรี่”);
a1 เพิ่ม (“อลิซ”);
ระบบ ออก. println ("ArrayList Elements คือ");
ระบบ ออก. พิมพ์ (" t" + a1);
ลิสต์ l1 = new LinkedList ();
L1 เพิ่ม (“ซิลเวีย”);
L1 เพิ่ม (“อาร์จัน”);
L1 เพิ่ม (“Deepika”);
L1 เพิ่ม (“ซูซาน”);
ระบบ ออก. println ();
ระบบ ออก. println ("องค์ประกอบ LinkedList เป็น");
ระบบ ออก. พิมพ์ (" t" + l1); }}
ผลลัพธ์ของไวยากรณ์ข้างต้นมีดังต่อไปนี้
องค์ประกอบของ ArrayList
[John, Nancy, Mary, Alice]
องค์ประกอบที่เชื่อมโยง
[Silvia, Arjun, Deepika, Susan]
เห็นได้จากรหัสข้างต้นว่าทั้ง ArrayList และ LinkedList ยังคงมีคำสั่งแทรกอยู่
พวกเขาแตกต่างกันอย่างไร?
วิธีการและคำอธิบาย:
- ชุดและรายชื่อมีวิธีการของตนเองและให้เราดูที่นี่สักสองสามข้อ
S ไม่มี
ชุด - วิธีการ | รายการ - วิธีการ | 1. |
เพิ่ม () | - เพิ่มวัตถุลงในคอลเล็กชัน void add (int index, Object obj) - | เพิ่มวัตถุ obj 'ที่' index 'ที่ระบุไว้ในรายการ invoking และทำให้แน่ใจได้ว่าไม่มี element ใด ๆ ที่ถูกเขียนทับโดยการเปลี่ยนองค์ประกอบก่อนหน้านี้ 2 |
clear () - | เป็นการลบวัตถุออกจากคอลเล็กชัน boolean addAll (ดัชนี int, Collection c) - | จะเพิ่มคอลเลกชันทั้งหมด 'c' ลงในรายการการเรียกใช้และที่ 'index' ระบุไว้ นอกจากนี้ยังช่วยให้แน่ใจว่าจะไม่มีการเขียนทับองค์ประกอบใด ๆ นอกจากนี้เรายังสามารถตรวจสอบความถูกต้องของการทำงานโดยการตรวจสอบค่าส่งคืน จะส่งกลับค่า "true" ถ้าการเปลี่ยนแปลงนั้นประสบความสำเร็จอย่างอื่นจะส่งค่า 'false' 3 |
ประกอบด้วย () - | เพื่อตรวจสอบว่าชุดประกอบด้วยวัตถุบางอย่างอยู่ในนั้นหรือไม่ มันส่งกลับค่า 'จริง' ถ้าวัตถุมีอยู่ในชุด วัตถุรับ (int index) - | จะแสดงองค์ประกอบหรือออบเจกต์ที่ 'index' ที่ระบุ 4 |
isEmpty () | - เป็นการกำหนดว่าคอลเล็กชันจะช่วยในการเป็นองค์ประกอบใด ๆ ที่ไม่มีอยู่หรือไม่ มันส่งกลับค่า 'จริง' ถ้าไม่มีองค์ประกอบ int lastIndexOf (Object obj) - | ทำงานเหมือนกับการย้อนกลับของ indexOf () วิธีการ ส่งกลับค่าการเกิดขึ้นครั้งสุดท้ายของวัตถุ 'obj' ที่ระบุและส่งกลับค่า '1' ถ้าไม่มีวัตถุดังกล่าวในรายการ ดังนั้นจึงสามารถใช้เป็น มี () วิธีการตั้งค่าอินเทอร์เฟซ 6 |
remove () | - เป็นการลบองค์ประกอบออกจากคอลเล็กชันโดยระบุว่าเป็นพารามิเตอร์ของเมธอด ListIterator listIterator () - | จะส่งกลับ Iterator ไปยังดัชนีเริ่มต้นของ List 7 |
size () | - เป็นการนับจำนวนวัตถุหรือองค์ประกอบที่คอลเล็กชันมี ListIterator listIterator (int index) - | ช่วยในการทำซ้ำผ่านรายการ invoking เริ่มต้นที่ 'index' ที่ระบุ 8 |
- | Object remove (int index) - | ลบอ็อบเจ็กต์ที่ 'index' ที่ระบุไว้และส่งกลับค่าลบเป็นผลลัพธ์ นอกจากนี้ยังลดค่าดัชนีผลลัพธ์ผลลัพธ์เพื่อให้สอดคล้องกับการลบ 9 |
- | ชุดอ็อบเจ็กต์ (int index, Object obj) - | คือการกำหนด object obj ให้กับรายการ invoking ที่ 'index' ที่ระบุ 10 |
< | รายการลิสต์ย่อย (int start, int end) - | รวมอ็อบเจ็กต์จากดัชนี 'start' ไปยังดัชนี 'end' ในรายการที่เรียกใช้เมธอด การบำรุงรักษาใบสั่งแทรก: |
- ชุดจะไม่รักษาลำดับขององค์ประกอบที่ใส่ไว้ในชุดนั้นในขณะที่รายชื่อเก็บรักษาไว้ มีข้อยกเว้นสำหรับกฎนี้สำหรับ LinkedHashSet เนื่องจากจะรักษาลำดับการแทรกไว้ แต่ชุดอื่น ๆ เช่น HashSet และ TreeSet จะเรียงลำดับองค์ประกอบก่อนจัดเก็บ เช่นเดียวกันกับตัวอย่างด้านล่าง
ตั้งค่า
Input: Cat, Doll, Apple เก็บไว้เป็น: Apple, Cat, Doll
ใส่รายการ: แมว, ตุ๊กตา, แอปเปิ้ล
เก็บไว้เป็น: Cat, Doll, Apple
การปรากฏตัวของรายการซ้ำ:
- ชุดไม่อนุญาตให้ซ้ำกันในขณะที่รายชื่ออนุญาต หากมีการเพิ่มค่าที่ซ้ำกันลงในรายการระบบจะแทนที่ ดูตัวอย่างสำหรับตั้งค่าและรายการซ้ำ
ตั้งค่าอินพุท: 10, 20, 20, 50
จัดเก็บเป็น: 10, 20, 50
การป้อนข้อมูลในรายการ: 10, 20, 20, 50
จัดเก็บไว้เป็น: 10, 20, 20, 50
ค่าที่ไม่ถูกต้อง:
- ชุดสามารถมีค่า null ได้หนึ่งรายการในขณะที่ List สามารถมีค่ามากกว่าหนึ่งค่าและไม่ จำกัด เฉพาะหมายเลขใด ๆ
ตั้งค่าอินพุต: null, null, Man, Dog, Plane
เก็บไว้เป็น: null, Dog, Man, Plane
ใส่รายการ: null, null, Man, Dog, Plane
จัดเก็บเป็น: null, null, Man, Dog, Plane
การใช้ Iterator & ListIterator:
- วิธี Iterator ทำงานได้ดีกับทั้ง Set และ List ขณะที่ ListIterator ใช้งานได้เฉพาะกับ List เท่านั้น ListIterator สามารถใช้เพื่อสำรวจไปข้างหน้าและย้อนกลับผ่านรายการได้
การปรากฏตัวของ Legacy Class:
- ชุดไม่มีคลาสเดิมในขณะที่ส่วนติดต่อ List มีชื่อเรียกว่า "เวกเตอร์" เวกเตอร์ใช้อินเทอร์เฟซ List และดังนั้นจึงรักษาลำดับการแทรกไว้ เนื่องจากความพยายามในการซิงโครไนซ์ประสิทธิภาพของเวกเตอร์ในการเพิ่มการลบและการอัปเดตจะช้ากว่าเล็กน้อย
การใช้งาน:
- การติดตั้งชุดที่น้อยมากคือ HashSet, LinkedHashSet และ TreeSet การใช้งานรายการต่างๆของ Few ประกอบด้วย ArrayList และ LinkedList
เมื่อใช้ Set & List?
การใช้งาน Set and List ขึ้นอยู่กับความต้องการในการบำรุงรักษาคำสั่งแทรกตามที่เราได้เรียนรู้ว่า Set ไม่รักษาลำดับของการแทรกจึงสามารถใช้เมื่อคำสั่งมีความสำคัญน้อยกว่า ในทำนองเดียวกันให้ใช้รายการเมื่อคุณต้องการรักษาลำดับของการแทรกด้วย
ความแตกต่างในรูปแบบตาราง:
S
รายการ | 1. | ||
ใบสั่งการแทรก | จะเก็บใบสั่งการแทรกไว้ การแทรกครั้งแรกยังคงอยู่ในตำแหน่งแรกและอื่น ๆ โดยไม่คำนึงถึงค่าของมัน | ไม่เคยรักษาคำสั่งแทรกไว้ | 2 |
วิธีการ | ใช้วิธีการเช่น add (), clear (), contains (), isEmpty (), remove () และ size () | ใช้เมธอดเช่น add (), addAll (), get (), lastIndexOf (), ListIterator () ที่มีหรือไม่มีพารามิเตอร์ remove (), set () และ subList () | 3 |
ซ้ำกัน | ไม่อนุญาตให้ซ้ำกันและในกรณีที่มีลักษณะเช่นนี้ค่าจะถูกเขียนทับ | อนุญาตรายการที่ซ้ำกัน | 4 |
ค่า Null | สามารถมีค่า null ได้เพียงค่าเดียวเท่านั้น | สามารถมีค่าเป็นโมฆะได้หลายค่า | 5 |
การใช้ Iterator () & listIterator () | ใช้เฉพาะ iterator วิธี () | ใช้ iterator () รวมทั้ง listIterator () | 6 |
Presence of Legacy Class | ไม่มีคลาส Legacy | มีชั้น Legacy เรียกว่าเป็นเวกเตอร์ | 7 |
การใช้งาน | การติดตั้งอินเทอร์เฟซไม่กี่ชุดคือ HashSet, LinkedHashSet และ Tree Set | การติดตั้งส่วนติดต่อแบบไม่กี่รายการคือ LinkedList และ ArrayList | หวังว่าเราได้รวมความแตกต่างที่เป็นไปได้ระหว่าง Set กับ List หากคุณรู้สึกว่าพลาดอะไรบางอย่างโปรดแจ้งให้เราทราบ |