ความแตกต่างระหว่าง Set และ List ความแตกต่างระหว่าง

Anonim

ความแตกต่างระหว่างรายการอาร์เรย์และรายการที่เชื่อมโยง

ก่อนที่เราจะได้รับความแตกต่างที่เกิดขึ้นจริงให้เราได้รู้ว่าจริงๆแล้วเป็นอย่างไร

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 หากคุณรู้สึกว่าพลาดอะไรบางอย่างโปรดแจ้งให้เราทราบ