Різниця між набором і списком

Різниця між списком масивів і пов'язаним списком

Перш ніж ми розібраємось із фактичними відмінностями, давайте познайомимося, якими вони є насправді?

Що таке набір?

Ми зіткнулися з поняттям Set в математиці і множина тут більш-менш означає те саме. Так, це сукупність елементів і в більшості випадків - це сукупність подібних елементів. Ви можете спробувати додати ці елементи до набору та спробувати роздрукувати, щоб зрозуміти, як він насправді зберігається.

Введення для набору: 20, 50, 10, 30.

Він фактично зберігається у Set as 10, 20, 30, 50.

Елементи тут сортуються і зберігаються не в порядку їх вставки. Це одна з особливостей Set: він завжди сортує елементи перед зберіганням, і, звичайно, є винятки з нього, і одна з них - LinkedhashSet, оскільки він підтримує порядок вставки елементів..

У комп'ютерному плані, Набір включає кілька додаткових властивостей, таких як Методи та Спадщина. Методи подібно до функцій, і вони виконують певні завдання, такі як додавання, видалення чи повторення через набір елементів. Більшості з нас добре відомий термін «Спадщина», і він означає те саме тут. Так, ми можемо успадкувати метод зі своєї колекції, щоб його можна було використовувати з інтерфейсом Set. Знову ми говоримо про новий термін, тобто набір інтерфейсів, і це не більше ніж весь набір елементів, включаючи Методи.

Як це здійснити?

Просто для кращого розуміння ми представили набір із його синтаксисом. З синтаксису нижче, ви можете визначити різні типи набору, такі як HashSet і TreeSet.

імпорт java.util. *;

публічний клас Setexample

public static void main (String args [])

int count [] = 34, 22,10,60,30,22 25, 17, 76, 12, 88, 57;

Set set = новий HashSet ();

спробуйте

for (int i = 0; i < 5; i++)

set.add (count [i]);

System.out.println (набір);

TreeSet sortedSeteg = новий TreeSet (набір);

System.out.println ("Тут ми відсортовані:");

System.out.println (sortedSeteg);

System.out.println ("Подивіться на перший елемент:" + (Integer) sortedSet.first ());

System.out.println ("Подивіться на останній елемент:" + (Integer) sortedSet.last ());

лов (виняток е)

Вихід вищевказаного коду полягає в наступному.

[25, 17, 76, 12, 88]
Тут ми маємо відсортований вихід:
[12, 17, 25, 76, 88]
Подивіться на перший елемент: 12
Подивіться на останній елемент: 88

Що таке Список?

Список розширює колекцію аналогічно тому, як це робив набір, але він підтримує порядок вставки. Ви намагаєтеся додати до списку такі імена і подивіться, як до нього додаватись.

Вхід до списку: Джон, Ненсі, Мері, Аліса.

Як він зберігається у списку: Джон, Ненсі, Мері, Аліса.

Просто помітьте порядок їх введення. Ви можете визначити, що "Джон" є першим елементом вхідних даних, а також вихідних даних, і слідує тим самим порядком, в якому вставляються імена. Ми навіть можемо вважати це одним із головних властивостей Список.

Як це здійснити?

Давайте розглянемо кілька методів списку, таких як ArrayList і LinkedList, у нижченаведеному синтаксисі.

імпорт java.util. *;
Збірник зібрання для публічного класу

public static void main (String [] args)

Список a1 = новий ArrayList ();
a1.add ("Джон");
a1.add ("Ненсі");
a1.add ("Марія");
a1.add ("Аліса");
System.out.println ("елементи ArrayList є");
System.out.print ("\ t" + a1);

Список l1 = новий LinkedList ();
l1.add ("Сільвія");
l1.add ("Арджун");
l1.add ("Діепіка");
l1.add ("Сьюзен");
System.out.println ();
System.out.println ("елементи пов'язані списки є");
System.out.print ("\ t" + l1);

Вихід із наведеного синтаксису виглядає наступним чином.

Елементи ArrayList є

[Джон, Ненсі, Мері, Аліса]

Елементи пов'язаного списку

[Сільвія, Арджун, Діпіка, Сьюзан]

З наведеного вище коду зрозуміло, що і ArrayList, і LinkedList підтримують порядок вставки.

Як вони відрізняються?

  • Методи та описи:

Набір і список має свої методи, і ми розглянемо деякі з них тут.

S.No Набір - методи Список - методи
1. add () - Це додати об’єкти до колекції. void add (int index, Object obj) - Він додає об'єкт 'obj' у вказаний 'індекс' списку викликань і переконуєсь, що жоден елемент не буде перезаписаний зміщенням попередніх елементів.
2. ясно () - Це вилучення предметів із колекції. булева addAll (int індекс, колекція c) - Він додає всю колекцію 'c' до списку викликань та вказаного 'індексу'. Це також гарантує, що жодні елементи не будуть перезаписані. Ми також можемо перевірити правильність його роботи, вивчивши повернене значення. Він повертає "true", якщо зміна успішна, інакше повертає значення "false".
3. містить () - Це перевірити, чи містить набір певний предмет у ньому. Він повертає значення "true", якщо об'єкт присутній у наборі. Об'єкт get (int index) - Він повертає елемент або об'єкт у вказаному "індексі".
4. пусто() - Потрібно визначити, чи допомагає колекція, оскільки в ній немає елементів. Він повертає значення "true", якщо немає елемента. int lastIndexOf (Object obj) - Він працює аналогічно зворотному indexOf () Метод. Він повертає останнє виникнення зазначеного об'єкта 'obj', а значення '1' повертається, якщо такого списку в списку немає. Тому його також можна використовувати як містить () Метод встановлення інтерфейсу.
6. видалити () - Це видалити елемент із колекції, вказавши його як параметр методу. ListIterator listIterator () - Він повертає ітератор до початкового індексу Списку.
7. розмір () - Це підрахувати кількість об'єктів або елементів, які має колекція. ListIterator listIterator (int індекс) - Це допомагає в ітерації через список викликів, починаючи з вказаного "індексу".
8. - Видалення об’єкта (int index) - Він видаляє об'єкт у вказаному "індексі" і повертає видалений елемент як результат. Він також зменшує показники результатів списку для відображення видалення.
9. - Набір об'єктів (int index, object obj) - Потрібно призначити об'єкт 'obj' списку викликань у вказаному 'індексі'.
10. - Список підпису (int start, int end) - Потрібно включити об'єкти від індексу 'start' до індексу 'end' у список, який викликав Метод.
  • Технічне обслуговування замовлення:

Набір ніколи не підтримує порядок елементів, в які вони вставлені в нього, тоді як Список підтримує його. Існує виняток із цього правила для LinkedHashSet, оскільки він підтримує порядок вставки, але інший набір, такий як HashSet і TreeSet, сортує елементи перед його зберіганням. Те саме описано на прикладах нижче.

Встановити Вхід: Кіт, Лялька, Яблуко.

Зберігається як: Apple, Cat, лялька.

Список входів: Кіт, Лялька, Яблуко.

Зберігається як: Кішка, Лялька, Яблуко.

  • Наявність копій:

Набір ніколи не дозволяє дублікати, тоді як Список дозволяє. Якщо до списку потрібно додати повторне значення, воно перезаписується. Подивіться на зразки для дублікатів Set and List.

Введіть вхід: 10, 20, 20, 50.

Зберігається як: 10, 20, 50.

Введення списку: 10, 20, 20, 50.

Зберігається як: 10, 20, 20, 50.

  • Нульові значення:

Набір може мати лише одне нульове значення, тоді як Список може мати більше одного нульового значення і не обмежується жодним числом.

Введіть введення: null, null, людина, собака, літак.

Зберігається як null, собака, людина, літак.

Введення списку: null, null, людина, собака, літак.

Зберігається як: null, null, людина, собака, літак.

  • Використання Iterator & ListIterator:

Метод Iterator добре працює як із Set, так і з List, тоді як метод ListIterator працює лише з List. ListIterator можна використовувати для переходу вперед, а також назад по списку.

  • Наявність Legacy Class:

Набір не має спадкового класу, тоді як інтерфейс списку має спадщину, звану як "вектор". Вектор використовує інтерфейс List, і тому він підтримує порядок вставки. Завдяки синхронізації, ефективність вектора в доповненнях, видаленнях та оновленнях відбувається трохи повільніше.

  • Виконання:

Мало хто з реалізацій набору - HashSet, LinkedHashSet і TreeSet. Мало хто з реалізацій List включає ArrayList та LinkedList.

Коли використовувати Set & List?

Використання Set і List суто залежить від вимог забезпечення порядку вставки. Оскільки ми дізналися, що набір ніколи не підтримує порядок вставки, його можна використовувати, коли порядок має меншу важливість. Аналогічним чином використовуйте Список, коли вам потрібно підтримувати послідовність вставки.

Відмінності в табличній формі:

S.No Відмінності в Встановити Список
1. Порядок введення Він підтримує порядок вставки. Перший вставлений залишається в першу чергу і так далі, незалежно від його значення. Він ніколи не підтримує порядок вставки.
2. Методи Він використовує такі методи, як add (), clear (), містить (), isEmpty (), remove () та size (). Він використовує такі методи, як add (), addAll (), get (), lastIndexOf (), ListIterator () з параметром або без нього, delete (), set () та subList ().
3. Дублікати Він ніколи не допускає дублікатів, і у випадку таких появи значення перезаписується. Це дозволяє дублікати.
4. Нульові значення Він може мати максимум одне нульове значення. Він може мати будь-яку кількість нульових значень.
5. Використання Iterator () та listIterator () Він використовує лише метод ітератора методу (). Він використовує як ітератор (), так і listIterator ().
6. Наявність класу спадщини Не існує класу Спадщина. Він як клас спадщини називається вектором.
7. Впровадження Мало хто з реалізацій інтерфейсу Set - це HashSet, LinkedHashSet і Tree Set. Мало реалізацій інтерфейсу списку - LinkedList та ArrayList.

Сподіваємось, ми включили всі можливі різниці між набором та списком. Якщо ви відчуваєте, що ми щось пропустили, будь ласка, повідомте нас про це.