logo

Запитання та відповіді на співбесіді з колекціями Java

Java Collection Framework було введено в JDK 1.2 який містить усі класи колекції та інтерфейси. Колекція Java це структура, яка надає механізм для зберігання колекції об’єктів і керування нею. Це дозволяє розробникам отримувати доступ до готових структур даних і алгоритмів для обробки даних.

У цій статті ми розглянули 50 найкращих Запитання для співбесіди про колекції Java і відповіді які охоплюють усе: від базових до розширених концепцій колекцій Java, таких як навігаційна колекція, WeakHashMap, потоки Лямбда тощо. Незалежно від того, чи є ви свіжіше або an досвідчений Java розробник , ці запитання для співбесіди з колекціями Java нададуть вам усю впевненість, необхідну для проходження наступної співбесіди з Java.

Запитання для співбесіди про колекції Java

Запитання для співбесіди про колекції Java



java заміна всього

Ми розділили 50 запитань на дві частини: досвідчені та новачки. Почнемо із запитань для першокурсників.

Зміст

Запитання для співбесіди з колекції Java для новачків

1. Що таке колекція в Java?

Термін колекція відноситься до групи об'єктів, представлених як одне ціле. Класи в ієрархії класів колекції Java поділяються на дві частини корінь інтерфейси: Зб (java.util.Collection) і Карта (java.util.Map) . Терміни, з якими ви зіткнетеся, вивчаючи колекцію в Java:

  • Структура колекції: Java Collection Framework визначає класи та інтерфейси для представлення груп об’єктів як єдиного цілого. Розробники C++ можуть порівняти фреймворк Collection з STL (стандартна бібліотека шаблонів) і Container Framework із Collection Framework, якщо вони походять із C++.
  • Інтерфейс колекції: Інтерфейс класу визначає, що він має робити, а не як. Іншими словами, це план для класу. Цей інтерфейс надає найпоширеніші методи для всіх об’єктів колекції, які є частиною колекції Framework. Крім того, він представляє окремий об’єкт у цілому.
  • Клас колекції: Член Collection Framework, він є частиною пакета java.util. Об’єкт колекції забезпечено багатьма допоміжними методами в цьому класі.

2. Що таке Framework в Java?

Фреймворки - це набори класи і інтерфейси які надають готову архітектуру. Немає необхідності визначати структуру, щоб реалізувати нові функції або класи. Як наслідок, оптимальний об’єктно-орієнтований дизайн включає структуру, що містить набір класів, усі з яких виконують схожі завдання. Фреймворк можна використовувати різними способами, наприклад, викликаючи його методи, розширюючи його та надаючи зворотні виклики, слухачі та інші реалізації. Деякі з популярних фреймворків у Java:

  • Весна
  • сплячий режим
  • Розпірки
  • Google Web Toolkit (GWT)
  • JavaServer Faces (JSF)

3. Яка різниця між масивом і колекцією в Java?

Масиви — це набір змінних подібного типу зі спільною назвою в Java. Існують деякі відмінності між масивами в Java та C/C++. З іншого боку, колекції — це групи окремих об’єктів, які утворюють єдине ціле, відоме як колекція об’єктів.

Масиви

Колекція

Масиви мають фіксований розмір, тобто коли ми створюємо масив, ми не можемо збільшити або зменшити відповідно до наших вимог. Колекція вирощується за своєю природою та базується на наших вимогах. Ми можемо збільшити або зменшити розмір.
Що стосується пам'яті, масиви не рекомендуються для використання. Що стосується пам'яті, то колекції рекомендовані до використання.
З точки зору продуктивності, рекомендується використовувати масиви. З точки зору продуктивності колекції не рекомендуються до використання.
Масиви можуть містити лише елементи однорідного типу даних. Колекція може містити як однорідні, так і різнорідні елементи.

Для отримання додаткової інформації зверніться до статті – Різниця між масивами та колекціями в Java

4. Які різні інтерфейси використовуються в Java Collections Framework?

Колекція відома як корінь ієрархії колекції. Колекції представляють групи об’єктів, відомих як елементи. Платформа Java не передбачає прямої реалізації цього інтерфейсу, але інтерфейс Collection реалізується класами List і Set.

  • Інтерфейс колекції
  • Інтерфейс списку
  • Встановити інтерфейс
  • Інтерфейс черги
  • Інтерфейс видалення черги
  • Інтерфейс карти

5. Поясніть ієрархію структури колекції в Java.

Усі класи та інтерфейси, необхідні для структури колекції, містяться в пакеті службових програм (java. util). Фреймворки колекцій мають інтерфейс, який називається ітерованим інтерфейсом, який дозволяє ітератору перебирати всі колекції. На додаток до цього інтерфейсу, головний інтерфейс колекції діє як кореневий для структури колекції. Усі колекції розширюють цей інтерфейс колекції, тим самим розширюючи властивості ітератора та методи цього інтерфейсу. Наступний малюнок ілюструє ієрархію структури колекції.

Ієрархія колекції Java

6. Які переваги колекції Framework?

Переваги Collection Framework: Оскільки відсутність структури збору призвело до вищезазначеного набору недоліків, нижче наведено переваги структури збору.

  • Послідовний API: API має базовий набір інтерфейсів, наприклад Колекція , встановити , Список , або Карта , усі класи (ArrayList, LinkedList, Vector тощо), які реалізують ці інтерфейси, мають дещо загальний набір методів.
  • Зменшує зусилля програмування: Програмісту не потрібно турбуватися про дизайн колекції, він може зосередитися на її найкращому використанні у своїй програмі. Таким чином, базова концепція об’єктно-орієнтованого програмування (тобто абстракції) була успішно реалізована.
  • Збільшує швидкість і якість програми: Підвищує продуктивність, надаючи високопродуктивні реалізації корисних структур даних і алгоритмів, оскільки в цьому випадку програмісту не потрібно думати про найкращу реалізацію конкретної структури даних. Він може просто використати найкращу реалізацію, щоб різко підвищити продуктивність свого алгоритму/програми.

7. Що таке ArrayList в Java?

ArrayList є частиною структури збору Java і є класом пакета java.util. Він надає нам динамічні масиви в Java. Основні переваги ArrayList полягають у тому, що якщо ми оголошуємо масив, то потрібно згадати розмір, але в ArrayList не потрібно згадувати розмір ArrayList, якщо ви хочете згадати розмір, ви можете це зробити.

Список масивів

Зображення списку масивів

Для отримання додаткової інформації зверніться до статті – ArrayList в Java

8. Яка різниця між Collection і Collections?

Колекція Колекції
Це інтерфейс. Це корисний клас.
Він використовується для представлення групи окремих об’єктів як єдиного цілого. Він визначає кілька корисних методів, які використовуються для роботи зі збором.
Колекція — це інтерфейс, який містить статичний метод, починаючи з java8. Інтерфейс також може містити абстрактні методи та методи за замовчуванням. Він містить лише статичні методи.

Для отримання додаткової інформації зверніться до статті – Колекція проти колекцій у Java з прикладом

9. Різниця між ArrayList і LinkedList у рамках колекції Java?

ArrayList проти LinkedList

ArrayList і LinkedList

ArrayList

LinkedList

Цей клас використовує динамічний масив для зберігання елементів у ньому. З появою генериків цей клас підтримує зберігання всіх типів об’єктів. Цей клас використовує подвійний зв’язаний список для зберігання елементів у ньому. Подібно до ArrayList, цей клас також підтримує зберігання всіх типів об’єктів.
Маніпулювання ArrayList займає більше часу через внутрішню реалізацію. Кожного разу, коли ми видаляємо елемент, внутрішній масив обходиться, а біти пам’яті зсуваються. Маніпулювання LinkedList займає менше часу порівняно з ArrayList, оскільки в подвійно зв’язаному списку немає концепції зміщення бітів пам’яті. Перехід по списку та зміна посилання посилання.
Цей клас реалізує інтерфейс списку. Тому це діє як список. Цей клас реалізує як інтерфейс List, так і інтерфейс Deque. Тому він може виступати як список, так і дек.
Цей клас працює краще, коли програма вимагає зберігання даних і доступу до них. Цей клас працює краще, коли програма вимагає маніпулювання збереженими даними.

Для отримання додаткової інформації зверніться до статті – ArrayList проти LinkedList у Java

10. Що таке ітератор?

Фреймворк колекції Java використовує ітератори для отримання елементів по одному. Цей ітератор є універсальним, оскільки його можна використовувати з будь-яким типом об’єкта Collection. Використовуючи Iterator, ми можемо виконувати як операції читання, так і видалення. Це вдосконалена версія Enumeration з додаванням видалення елементів.

Під час перерахування елементів у всіх структурах колекції реалізовані інтерфейси, такі як встановити , Список , Черга , Про що і всі реалізовані класи Map, необхідно використовувати ітератор. Єдиний курсор, доступний для всієї колекції, це ітератор. Використовуючи метод iterator() в інтерфейсі Collection, ви можете створити об’єкт iterator.

Синтаксис:

Iterator itr = c.  iterator  ();>

Примітка: Тут c — будь-який об’єкт колекції. itr має тип інтерфейсу Iterator і посилається на c.

Для отримання додаткової інформації зверніться до статті – Ітератори в Java

11. Яка різниця між ітератором і переліком?

Основна відмінність між ітератором і переліком полягає в тому, що ітератори мають метод remove(), тоді як переліки його не мають. Таким чином, використовуючи Iterator, ми можемо маніпулювати об’єктами, додаючи та видаляючи їх із колекцій. Оскільки перерахування може лише проходити об’єкти та отримувати їх, воно поводиться як інтерфейс лише для читання.

Для отримання додаткової інформації зверніться до статті – Різниця між ітератором і перерахуванням

12. Яка різниця між List і Set в Java

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

Список

встановити

Список — це індексована послідовність. Набір є неіндексованою послідовністю.
Список допускає повторювані елементи Набір не допускає дублювання елементів.
Можна отримати доступ до елементів за їх положенням. Доступ до елементів не дозволяється.
Можна зберігати кілька нульових елементів. Нульові елементи можна зберігати лише один раз.
Реалізаціями списків є ArrayList, LinkedList, Vector, Stack Реалізаціями наборів є HashSet, LinkedHashSet.

Для отримання додаткової інформації зверніться до статті – Різниця між List і Set в Java

13. Які найкращі практики для Java Collections Framework?

Нижче наведено деякі з найкращих практик під час використання колекцій Java:

  • Програми мають бути написані як інтерфейси, а не реалізації, щоб ми могли змінити реалізацію пізніше.
  • За можливості використовуйте Generics, щоб забезпечити безпеку типів і уникнути ClassCastExceptions.
  • Вибір відповідного типу колекції виходячи з потреби. Наприклад, якщо розмір фіксований, ми можемо захотіти використовувати масив замість ArrayList. Під час ітерації карти ми повинні використовувати LinkedHashMap. Набір — найкращий спосіб уникнути дублікатів.
  • Використовуйте незмінні класи, надані JDK, як ключі в Map, щоб уникнути реалізації hashCode() і equals().
  • Щоб підвищити читабельність коду, ми повинні використовувати isEmpty() замість того, щоб знаходити розмір колекції та порівнювати його з нулем.
  • Замість того, щоб писати власну реалізацію, скористайтеся службовим класом Collections, щоб натомість отримати колекції лише для читання, синхронізовані або порожні. Це покращує повторне використання коду, забезпечуючи більшу стабільність.

14. Що таке пріоритетна черга в Java?

PriorityQueue використовуються для обробки об’єктів відповідно до їх пріоритету. Черги дотримуються алгоритму 'першим прийшов - першим вийшов', але іноді елементи черги потрібно обробляти відповідно до їх пріоритету, і саме тут у гру вступає PriorityQueue. Черги пріоритетів базуються на купах пріоритетів.

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

Пріоритетні черги в Java

Пріоритетні черги в Java

Декларація:

public class PriorityQueue extends AbstractQueue implements Serializable where E is the type of elements held in this queue>

Клас реалізує інтерфейси Serializable, Iterable, Collection і Queue.

15. Яка різниця між List, set і map у java?

Список

встановити

Карта

Інтерфейс списку дозволяє дублювати елементи

Набір не допускає дублювання елементів.

Карта не допускає повторюваних елементів

Список підтримує порядок вставлення.

Набір не підтримує порядок вставки.

Карта також не підтримує порядок вставки.

Ми можемо додати будь-яку кількість нульових значень.

Але в наборі майже тільки одне нульове значення.

Карта допускає щонайбільше один нульовий ключ і будь-яку кількість нульових значень.

Класами реалізації списку є Array List і LinkedList.

Класами реалізації набору є HashSet, LinkedHashSet і TreeSet.

Класи реалізації карти: HashMap, HashTable, TreeMap, ConcurrentHashMap і LinkedHashMap.

Для отримання додаткової інформації зверніться до статті – Різниця між List, Set і Map у Java

16. Яка різниця між чергою та стеком?

Стек

Черга

Stacks працює за принципом LIFO, що означає, що елемент, вставлений останнім, буде першим елементом, який буде вилучено. Черги працюють за принципом FIFO, що означає, що елемент, вставлений першим, буде першим елементом, який буде видалено.
У стеках вставки та видалення відбуваються лише зверху. У чергах вставка відбувається в кінці списку, а видалення — у початку списку.
Операція вставки називається операцією push. Операція вставки називається операцією постановки в чергу.
Операція видалення називається операцією pop. Операція видалення називається операцією видалення з черги.
Верхівка стека завжди вказує на останній елемент у списку, який є єдиним покажчиком, який використовується для доступу до списку. Для доступу до черг зберігаються два покажчики. Передній покажчик вказує на перший вставлений елемент, а задній вказує на останній вставлений елемент.

17. Що таке BlockingQueue в Java?

Інтерфейс BlockingQueue у Java додано в Java 1.5 разом із різними іншими паралельними класами утиліти, такими як ConcurrentHashMap, Counting Semaphore, CopyOnWriteArrrayList тощо. Інтерфейс BlockingQueue підтримує керування потоком (на додаток до черги), вводячи блокування, якщо BlockingQueue повний або порожній.

Потік, який намагається поставити елемент у повну чергу, блокується, доки якийсь інший потік не звільнить місце в черзі, вилучивши з черги один чи більше елементів або повністю очистивши чергу. Подібним чином він блокує потік, який намагається видалити з порожньої черги, доки інші потоки не вставлять елемент. BlockingQueue не приймає нульове значення. Якщо ми спробуємо поставити в чергу нульовий елемент, він викине NullPointerException.

Використання BlockingQueue

Блокування черги в Java

Блокування черги в Java

Ієрархія BlockingQueue

Ієрархія черги блокування в Java

Ієрархія черги блокування в Java

Декларація:

public interface BlockingQueue extends Queue>

тут, І це тип елементів, що зберігаються в колекції.

Для отримання додаткової інформації зверніться до статті – Інтерфейс BlockingQueue в Java

18. Що таке hashCode()?

Зображення для демонстрації хеш-коду Java

Зображення для демонстрації хеш-коду Java

Метод hashCode() повертає значення хеш-коду як ціле число. Він визначений у класі Java Object, який обчислює хеш-значення заданих вхідних об’єктів. Значення хеш-коду здебільшого використовується в колекціях на основі хешування, таких як HashMap, HashSet, HashTable… тощо. Цей метод має бути перевизначений у кожному класі, який перевизначає метод equals().

Синтаксис:

public int hashCode() // This method returns the hash code value // for the object on which this method is invoked.>

Для отримання додаткової інформації зверніться до статті – методи equals() і hashCode() в Java

19. Розрізняйте ArrayList і Vector у Java Collection Framework.

Під час співбесід із колекцією це питання часто задають; однак Vector синхронізовано, а ArrayList – ні. ArrayList швидший за Vector. За потреби розмір масиву ArrayList збільшується на 50%, тоді як ємність Vector подвоюється щоразу, коли це необхідно.

сортування списку java
Список масивів проти вектора в java

Список масивів проти вектора в java

ArrayList

Вектор

ArrayList не синхронізовано Вектор синхронізований.
Розмір ArrayList збільшується до 50% поточного розміру масиву, якщо кількість елементів перевищує його місткість. Розмір ArrayList збільшується до 100% поточного розміру масиву, якщо кількість елементів перевищує його місткість.
ArrayList швидкий, оскільки він не синхронізований. Vector повільніше, оскільки він синхронізований.
Інтерфейс ітератора використовується для обходу елементів Інтерфейс ітератора або Enumeration можна використовувати для обходу вектора.

Для отримання додаткової інформації зверніться до статті – Vector проти ArrayList у Java

20. Розрізняйте Iterator і ListIterator.

Ітератор

ListIterator

Можна перетинати елементи, наявні в колекції, лише в прямому напрямку. Може перетинати елементи колекції як вперед, так і назад.
Допомагає проходити карту, список і набір. Може проходити лише список, а не два інших.
Індекси неможливо отримати за допомогою Ітератора. Він має такі методи, як nextIndex() і previousIndex() для отримання індексів елементів у будь-який час під час перегляду списку.
Неможливо змінити або замінити елементи, присутні в колекції Ми можемо змінювати або замінювати елементи за допомогою набору (E e)

Для отримання додаткової інформації зверніться до статті – Різниця між ітератором і ListIterator

21. Яка різниця між ітератором і переліком?

Ітератор: Це універсальний ітератор, оскільки ми можемо застосувати його до будь-якого об’єкта Collection. Використовуючи ітератор, ми можемо виконувати як операції читання, так і видалення.

Синтаксис:

// Here 'c' is any Collection object. itr is of // type Iterator interface and refers to 'c' Iterator itr = c.iterator();>

Перерахування: Перерахування (або enum) — це визначений користувачем тип даних. Він в основному використовується для призначення імен інтегральним константам, імена роблять програму легкою для читання та підтримки.

Синтаксис:

// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }>

Ітератор

Перерахування

Ітератор є універсальним курсором, оскільки він застосовний до всіх класів колекції. Перерахування не є універсальним курсором, оскільки воно застосовується лише до застарілих класів.
Ітератор має метод remove(). Перерахування не має методу remove().
Ітератор може вносити зміни (наприклад, використовуючи метод remove(), який видаляє елемент із колекції під час обходу). Інтерфейс перерахування діє як інтерфейс лише для читання, не можна вносити жодних змін до колекції під час обходу елементів колекції.
Ітератор не є застарілим інтерфейсом. Ітератор можна використовувати для обходу HashMap, LinkedList, ArrayList, HashSet, TreeMap і TreeSet. Перерахування — це застарілий інтерфейс, який використовується для обходу вектора та хеш-таблиці.

Для отримання додаткової інформації зверніться до статті – Різниця між ітератором і перерахуванням

22. Які особливості Java Hashmap?

HashMap схожий на HashTable, але він несинхронізований. Це також дозволяє нам зберігати нульові ключі, але має бути лише один об’єкт нульового ключа, і може бути будь-яка кількість нульових значень. Цей клас не дає гарантій щодо порядку карти. Щоб використовувати цей клас і його методи, вам потрібно імпортувати java.util. HashMap пакет або його суперклас.

HashMap в Java

HashMap в Java

Синтаксис:

  public class   HashMap   extends   AbstractMap   implements   Map, Cloneable, Serializable>

Параметри: Він приймає два параметри, а саме:

  • Тип ключів, які підтримує ця карта (K)
  • Тип зіставлених значень (V)

Для отримання додаткової інформації зверніться до статті – HashMap в Java з прикладами

23. Що таке інтерфейси колекції?

The Колекція інтерфейс є членом Java Collections Framework. Це частина java.util пакет. Це один із кореневих інтерфейсів ієрархії колекції. Інтерфейс колекції безпосередньо не реалізований жодним класом. Однак він реалізується опосередковано через його підтипи або підінтерфейси, такі як List, Queue і Set.

Наприклад, клас HashSet реалізує інтерфейс Set, який є підінтерфейсом інтерфейсу Collection. Якщо реалізація колекції не реалізує певну операцію, вона повинна визначити відповідний метод для викиду UnsupportedOperationException.

Ієрархія колекції:

Інтерфейс колекції в Java

Інтерфейс колекції в Java

24. Поясніть інтерфейс списку.

Інтерфейс класу в Java

Інтерфейс класу в Java

У Java інтерфейс List дозволяє користувачеві зберігати впорядковану колекцію об’єктів. Список є дочірнім інтерфейсом Collection. У колекції список — це впорядкована колекція об’єктів, які можуть мати повторювані значення. Оскільки список зберігає порядок вставки, він дозволяє позиційний доступ і вставку, що також допускає повторювані значення.

Синтаксис:

public interface List extends Collection ;>

Цей інтерфейс списку реалізовано різними класами, такими як ArrayList, Vector, Stack тощо. Оскільки всі підкласи реалізують список, ми можемо створити об’єкт списку за допомогою будь-якого з цих класів.

приклад:

Список al = новий ArrayList ();
Список ll = новий LinkedList ();
Список v = новий вектор ();

Де Т - тип об'єкта

Список масивів у Java

Список масивів у Java

Класи, які реалізують інтерфейс List, такі:

  • ArrayList
  • LinkedList
  • Вектор
  • Стек

25. Напишіть програму для перетворення заданого масиву в колекцію за допомогою методу asList().

Щоб перетворити дані на основі масиву в дані на основі колекції, ми можемо використовувати java.util.Arrays клас. Цей клас надає статичний метод asList(T… a), який перетворює масив у колекцію.

Java




// Convert an Array into Collection in Java> // import java util library> import> java.util.*;> > // class for writing logic of the problem> public> class> ArrayToCollection {> >public> static> void> main(String args[])> >{> >// array input> >String students[] = {>'Kamlesh'>,>'Abhay'>,> >'Abhishek'>,>'Shivansh'> };> > >// printing input elements for comparison> >System.out.println(>'Array input: '> >+ Arrays.toString(students));> > >// converting array into Collection> >// with asList() function> >List studentList = Arrays.asList(students);> > >// print converted elements> >System.out.println(>'Converted elements: '> >+ studentList);> >}> }>

>

>

Вихід

Array input: [Kamlesh, Abhay, Abhishek, Shivansh] Converted elements: [Kamlesh, Abhay, Abhishek, Shivansh]>

26. Розрізняйте HashSet і HashMap

HashSet

HashMap

що таке build-essential ubuntu
HashSet реалізує інтерфейс Set HashMap реалізує інтерфейс Map
Дублікати не допускаються Так, дублікати значень дозволені, але дублікат ключа не допускається
У HashSet дозволені фіктивні значення. У HashMap не допускаються фіктивні значення.
Під час операції додавання потрібен один об’єкт Під час операції додавання потрібні 2 об’єкти
Швидкість порівняно нижча, ніж у HashMap Швидкість порівняно вища, ніж у HashSet, оскільки тут використовується техніка хешування.
Мати єдине нульове значення Один нульовий ключ і будь-яка кількість нульових значень
Для вставки використовується метод Add(). Для вставки використовується метод put().

Для отримання додаткової інформації зверніться до статті – Різниця між HashMap і HashSet

27. Розрізняйте HashSet і HashTable.

HashSet

HashTable

HashSet допускає елементи NULL HashTable не допускає елементів NULL.

Об’єкти, які ви вставляєте в HashSet, не гарантовано будуть вставлені в тому самому порядку. Об’єкти вставляються на основі їх хеш-коду. LinkedHashSet можна використовувати для підтримки порядку.

HashTable не підтримує порядок вставки.
HashSet не синхронізований, але його можна синхронізувати зовні. HashTable синхронізовано.
Метод add() використовується для вставки в HashSet Метод put() використовується для вставки в HashTable

28. Який розмір коефіцієнта завантаження за замовчуванням у колекції на основі хешування?

Зі збільшенням коефіцієнта навантаження місткість зростає так, що робоча складність HashMap залишається O(1), якщо відношення поточного елемента до початкової потужності перетинає поріг. Значення операційної складності O(1) означає, що операції пошуку та вставки займають постійний час. Розмір коефіцієнта навантаження за замовчуванням становить 0,75 . Потужність за замовчуванням розраховується шляхом множення початкової потужності на коефіцієнт навантаження.

Для отримання додаткової інформації зверніться до статті – Коефіцієнт навантаження в HashMap на Java з прикладами

Запитання для співбесіди з колекції Java для досвідчених

29. Яка різниця між Comparable і Comparator у Java?

Java надає два інтерфейси для сортування об’єктів за допомогою членів даних класу:

  • Порівнянний
  • компаратор

Порівнянний

компаратор

Інтерфейс Comparable забезпечує єдину послідовність сортування. Інтерфейс компаратора забезпечує кілька послідовностей сортування.
Фактичний клас змінюється за допомогою порівняльного інтерфейсу Фактичний клас не змінюється інтерфейсом Comparator.
Метод compareTo() використовується для сортування елементів. метод compare() використовується для сортування елементів.
Comparable присутній у пакеті java.lang Компаратор присутній в пакеті java.util

Для отримання додаткової інформації зверніться до статті – Comparable проти Comparator у Java

30. Яка різниця між безвідмовним і безвідмовним?

Ітератори в Java використовуються для перебору об’єктів колекції. Fail-Fast ітератори негайно викидають ConcurrentModificationException якщо є структурна модифікація колекції. Структурна модифікація означає додавання або видалення будь-якого елемента з колекції, поки потік виконує ітерацію по цій колекції. Класи Iterator on ArrayList і HashMap є прикладами швидкого ітератора.

Fail-Fast Безаварійності
Виняток ConcurrentModificationException виникає під час модифікації об’єкта під час процесу ітерації. Виняток не створюється
Fail-Fast потребує менше пам'яті під час процесу. Безвідмовний ітератор потребує більше пам’яті під час процесу.
Об’єкт-клон не створюється під час процесу ітерації. Під час процесу ітерації створюється об’єкт-клон або копія.
Fail-Fast не дозволяє модифікувати під час процесу ітерації. Fail-Safe дозволяє модифікувати під час процесу ітерації.
Fail-Fast швидкий, Fail-Safe трохи повільніше, ніж fail fast.

приклади:

ArrayList, Vector, HashMap, HashSet тощо.

приклади:

ConcurrentHashMap, CopyOnWriteArrayList тощо.

Для отримання додаткової інформації зверніться до статті – Fail Fast і Fail Safe Ітератори в Java

31. Напишіть програму для повторення списку за допомогою лямбда-виразу.

Ітерацію можна виконати за допомогою a лямбда-вираз.

Синтаксис:

list_name.forEach(variable->{//блок коду})>

Java




// Java Program to iterate over a List> // using forEach()> > // Importing all classes of> // java.util method> import> java.util.*;> > // Class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an ArrayList> >List l =>new> ArrayList();> > >// Adding elements to the List> >// Custom inputs> >l.add(>'Geeks'>);> >l.add(>'for'>);> >l.add(>'Geeks'>);> > >// Lambda expression printing all elements in a List> >l.forEach((temp) ->{ System.out.println(temp); });> >}> }>

>

>

Вихід

Geeks for Geeks>

Для отримання додаткової інформації зверніться до статті – Ітерація списку в Java

32. Що таке IdentityHashMap?

IdentityHashMap реалізує інтерфейс Map за допомогою Hashtable, порівнюючи ключі (і значення), використовуючи еталонну рівність замість рівності об’єктів. Цей клас реалізує інтерфейс Map, але він навмисно порушує загальний контракт Map, який вимагає, щоб об’єкти порівнювалися за допомогою метода equals(). Цей клас використовується, коли користувач дозволяє порівнювати об’єкти за допомогою посилань. Він належить пакету java.util.

Для отримання додаткової інформації зверніться до статті – Клас IdentityHashMap в Java

33. Напишіть програму на Java для відображення вмісту HashTable за допомогою перерахування.

Клас hashtable реалізує хеш-таблицю, яка відображає ключі на значення. Будь-який ненульовий об’єкт можна використовувати як ключ або як значення. Щоб успішно зберігати й отримувати об’єкти з хеш-таблиці, об’єкти, які використовуються як ключі, мають реалізовувати метод hashCode і метод equals. Нижче наведено програму для відображення вмісту HashTable за допомогою перерахування:

Java




// Java Program to Demonstrate Getting Values> // as an Enumeration of Hashtable class> > import> java.io.*;> import> java.util.Enumeration;> import> java.util.Hashtable;> > // Main class> // EnumerationOnKeys> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating an empty hashtable> >Hashtable hash> >=>new> Hashtable();> > >// Inserting key-value pairs into hash table> >// using put() method> >hash.put(>1>,>'Geeks'>);> >hash.put(>2>,>'for'>);> >hash.put(>3>,>'Geeks'>);> > >// Now creating an Enumeration object> >// to read elements> >Enumeration e = hash.elements();> > >// Condition holds true till there is> >// single key remaining> > >// Printing elements of hashtable> >// using enumeration> >while> (e.hasMoreElements()) {> > >// Printing the current element> >System.out.println(e.nextElement());> >}> >}> }>

>

>

Вихід

Geeks for Geeks>

34. Напишіть програму на java, щоб отримати перегляд колекції значень, присутніх у HashMap.

Клас HashMap Java має метод java.util.HashMap.values() для створення колекцій зі значень HashMap. По суті, він повертає перегляд колекції значень HashMap.

Java




// Java code to illustrate the values() method> import> java.util.*;> > public> class> Hash_Map_Demo {> >public> static> void> main(String[] args)> >{> > >// Creating an empty HashMap> >HashMap hash_map> >=>new> HashMap();> > >// Mapping string values to int keys> >hash_map.put(>0>,>'Welcome'>);> >hash_map.put(>1>,>'to'>);> >hash_map.put(>2>,>'Geeks'>);> >hash_map.put(>3>,>'4'>);> >hash_map.put(>4>,>'Geeks'>);> > >// Displaying the HashMap> >System.out.println(>'Initial Mappings are: '> >+ hash_map);> > >// Using values() to get the set view of values> >System.out.println(>'The collection is: '> >+ hash_map.values());> >}> }>

>

>

Вихід

Initial Mappings are: {0=Welcome, 1=to, 2=Geeks, 3=4, 4=Geeks} The collection is: [Welcome, to, Geeks, 4, Geeks]>

Для отримання додаткової інформації зверніться до статті – Метод HashMap values() у Java

35. Напишіть програму для об’єднання двох ArrayList в один ArrayList.

Маючи два ArrayLists у Java, наше завдання — об’єднати ці ArrayLists.

Java




// Java program to demonstrate> // How to join ArrayList> > import> java.util.*;> > public> class> GFG {> >public> static> void> main(String args[])> >{> > >ArrayList list_1 =>new> ArrayList();> > >list_1.add(>'Geeks'>);> >list_1.add(>'For'>);> >list_1.add(>'ForGeeks'>);> > >// Print the ArrayList 1> >System.out.println(>'ArrayList 1: '> + list_1);> > >ArrayList list_2 =>new> ArrayList();> > >list_2.add(>'GeeksForGeeks'>);> >list_2.add(>'A computer portal'>);> > >// Displaying the ArrayList 2> >System.out.println(>'ArrayList 2: '> + list_2);> > >// using Collection.addAll() method to join two> >// arraylist> >list_1.addAll(list_2);> > >// Print the joined ArrayList> >System.out.println(>'Joined ArrayLists: '> + list_1);> >}> }>

>

>

Вихід

ArrayList 1: [Geeks, For, ForGeeks] ArrayList 2: [GeeksForGeeks, A computer portal] Joined ArrayLists: [Geeks, For, ForGeeks, GeeksForGeeks, A computer portal]>

Для отримання додаткової інформації зверніться до статті – Об’єднайте два ArrayLists у Java

36. Як можна синхронізувати ArrayList у Java?

Використовуючи метод Collections.synchronizedList(), ми можемо синхронізувати наші колекції в Java. SynchronizedList() повертає синхронізований (потокобезпечний) список, підкріплений вибором.

Java




// Java program to show synchronization of ArrayList> import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Non Synchronized ArrayList> >List list =>new> ArrayList();> > >list.add(>'Eat'>);> >list.add(>'Coffee'>);> >list.add(>'Code'>);> >list.add(>'Sleep'>);> >list.add(>'Repeat'>);> > >// Synchronizing ArrayList in Java> >list = Collections.synchronizedList(list);> > >// we must use synchronize block to avoid> >// non-deterministic behavior> >synchronized> (list)> >{> >Iterator it = list.iterator();> >while> (it.hasNext()) {> >System.out.println(it.next());> >}> >}> >}> }>

>

>

Вихід

швидкість передачі в arduino
Eat Coffee Code Sleep Repeat>

37. Що таке клас властивостей у Java?

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

Особливості класу Properties:

  • Властивість є підкласом Hashtable.
  • Файл властивостей використовується для зберігання та отримання рядкового типу даних для списку значень, де ключ є рядком, а значення також є рядком.
  • Якщо оригінальний список властивостей не містить певну ключову властивість, пошук буде здійснюватися за стандартним списком властивостей.
  • Об’єкти можуть використовуватися кількома потоками без зовнішньої синхронізації.
  • Клас властивостей можна використовувати для отримання властивостей системи.

Для отримання додаткової інформації зверніться до статті – Клас властивостей у Java

38. Що станеться, якщо ви використовуєте HashMap у багатопотоковій програмі Java?

У багатопоточному середовищі, якщо кілька потоків структурно змінюють карту, наприклад додають, видаляють або змінюють відображення, внутрішня структура даних HashMap може бути пошкоджена, можуть бути відсутні зв’язки, неправильні записи та сама карта може стати абсолютно марним. Таким чином, ви не повинні використовувати HashMap у паралельній програмі; замість цього використовуйте ConcurrentHashMap або Hashtable, які є потокобезпечними. ConcurrentHashMap включає всі методи Hashtable, а також повну паралельність отримання та оновлення.

Як ThreadSafeConcurrentHashMap став потокобезпечним?

  • Клас java.util.Concurrent.ConcurrentHashMap забезпечує безпеку потоків, розділяючи карту на сегменти, що дозволяє блокувати лише один раз на сегмент, тобто один раз для кожного потоку.
  • Операція читання в ConcurrentHashMap не потребує блокування.

Для отримання додаткової інформації зверніться до статті – Як ConcurrentHashMap забезпечує безпеку потоків у Java?

39. Що станеться, якщо два різні ключі HashMap повернуть той самий hashcode()?

Коли два різні ключі HashMap повертають однаковий хеш-код, вони потраплять в одне відро; тому виникнуть зіткнення. n випадок зіткнення, тобто індекс двох або більше вузлів однаковий, вузли об’єднані списком посилань, тобто на другий вузол посилається перший вузол, а на третій – другий і так далі.

Для отримання додаткової інформації зверніться до статті – Внутрішня робота HashMap в Java

40. Що таке WeakHashMap?

WeakHashMap реалізує інтерфейс Map. На відміну від HashMap, WeakHashMap дозволяє збирання сміття, навіть якщо об’єкт, указаний як ключ, не містить жодних посилань, незважаючи на те, що він пов’язаний із WeakHashMap. Іншими словами, Garbage Collector краще, ніж WeakHashMap.

Для отримання додаткової інформації зверніться до статті – Hashmap проти WeakHashMap у Java

41. Що таке UnsupportedOperationException?

У контексті API або реалізацій списків UnsupportedOperationException є поширеним винятком. Виняток генерується, коли запитану операцію неможливо виконати. Цей клас є членом Java Collections Framework.

Синтаксис:

public class UnsupportedOperationException extends RuntimeException>

Для отримання додаткової інформації зверніться до статті – UnsupportedOperationException

42. Як зробити колекцію доступною лише для читання в Java?

Створення колекції лише для читання передбачає обмеження об’єкта лише отриманням даних, а не додаванням або видаленням даних. Java має різні методи для різних типів колекцій, наприклад unmodifiableCollection(), unmodifiableMap(), ununmodifiableSet() тощо. java.util. Клас collections визначає всі методи. Метод unmodifiableCollection() створює колекцію лише для читання. Для цього потрібне посилання на клас Collection. Якщо у нас є об’єкт Set Interface, ми можемо використовувати ununmodifiableSet() щоб зробити лише для читання.

Для отримання додаткової інформації зверніться до статті – Як зробити колекцію лише для читання в Java?

43. Різниця між PriorityQueue і TreeSet в Java?

PriorityQueue

TreeSet

PriorityQueue поставляється в JDK 1.5. TreeSet поставляється в JDK 1.4.
Структура даних, яку використовує PriorityQueue, — це Queue TreeSet використовує структуру даних Set.
Допускаються повторювані елементи. Повторювані елементи не допускаються.
За винятком кореневого елемента, решта елементів не дотримуються жодного певного порядку в PriorityQueue. У TreeSet усі елементи залишаються в порядку сортування.
Використовуючи PriorityQueue, ми можемо отримати найбільший або найменший елемент за час O(1). TreeSet не надає способу отримати найбільший або найменший елемент за час O(1), але оскільки вони розташовані в порядку сортування, він отримує перший або останній елемент за час O(1).

Для отримання додаткової інформації зверніться до статті – Різниця між PriorityQueue і TreeSet

44. Що таке оператор ромба в Java?

Ромбові оператори використовуються для спрощення використання генериків під час створення об’єктів, уникаючи неперевірених попереджень у програмі. Коли в Java 7 було представлено оператор Diamond, ми можемо створити об’єкт без згадки загального типу в правій частині виразу, як показано нижче.

Синтаксис:

List list = new ArrayList();>

Для отримання додаткової інформації зверніться до статті – Алмазний оператор

45. Як TreeMap працює в Java?

TreeMap зберігає пари ключ-значення, але TreeMap сортує ключі за зростанням, а не за спаданням, як HashMap. Залежно від того, який конструктор використовується, TreeMap буде відсортовано або на основі його ключів, або за допомогою компаратора. У TreeMap елементи сортуються на основі червоно-чорного дерева. Червоно-чорне дерево — це самобалансуюче двійкове дерево пошуку, де кожен вузол має додатковий біт, і цей біт часто інтерпретується як колір (червоний або чорний). Ці кольори використовуються для того, щоб дерево залишалося збалансованим під час вставок і видалень.

Структура вузла в Java

Структура вузла в Java

Для отримання додаткової інформації зверніться до статті – Внутрішня робота TreeMap у Java

46. ​​Перелічіть способи повторення Map у java?

Клас HashMap надає інтерфейс Java Map, зберігаючи дані в парах (ключ, значення) і звертаючись до них за індексом іншого типу. Для використання цього класу необхідно імпортувати java.util.HashMap пакет або його суперклас.

Існує багато способів перебору HashMap, 5 з яких наведено нижче:

  1. Ітерація через HashMap EntrySet за допомогою ітераторів.
  2. Ітерація через HashMap KeySet за допомогою Iterator.
  3. Ітерація HashMap за допомогою циклу for-each.
  4. Ітерація через HashMap за допомогою лямбда-виразів.
  5. Переглядайте HashMap за допомогою Stream API.

Для отримання додаткової інформації зверніться до статті – Як виконати ітерацію HashMap у Java

47. Що таке CopyOnWriteArrayList у Java?

CopyOnWriteArrayList в Java

CopyOnWriteArrayList в Java

JDK 1.5 представив розширену версію ArrayList під назвою CopyOnWriteArrayList, де всі зміни (додавання, встановлення, видалення тощо) реалізуються новою копією. Його можна знайти в java.util.concurrent. Це структура даних, створена для використання в паралельному середовищі. У середовищі, заснованому на потоках, CopyOnWriteArrayList призначений для частого читання та нечастого оновлення. CopyOnWriteArrayList — це потокобезпечна версія ArrayList.

Для отримання додаткової інформації зверніться до статті – CopyOnWriteArrayList в Java

48. Що таке EnumMap в Java?

EnumMap — це реалізація інтерфейсу Map, специфічного для типів перерахування. Клас EnumMap є членом Java Collections Framework і не синхронізується. Він розширює AbstractMap і реалізує інтерфейс Map у java. EnumMap належить до пакету java.util.

Синтаксис:

відкритий клас EnumMapрозширює AbstractMap реалізує Serializable, Cloneable

// K має розширювати Enum, що забезпечує виконання вимоги щодо того, що ключі мають бути вказаного типу enum.

Параметри:

  • Ключовий тип об'єкта
  • Тип об'єкта значення
EnumMap в Java

EnumMap в Java

Для отримання додаткової інформації зверніться до статті – Клас EnumMap в Java

49. Як всередині працює Hashmap?

HashMap працює за принципом хешування. HashMap містить масив Node, і Node може представляти клас, що має такі об’єкти:

  • int хеш
  • K ключ
  • V значення
  • Вузол наступний

Внутрішня робота HashMap:

  • Хешування
  • Відра
  • Розрахунок індексу в Hashmap

Для отримання додаткової інформації зверніться до статті – Внутрішня робота HashMap в Java

п'ятдесят. Чому ітератор у hashmap вважається швидким збоєм?

безвідмовні ітератори негайно створюють винятки одночасної модифікації, якщо будь-який потік іззовні намагається змінити колекцію, на якій вони виконують ітерацію. Функція швидкого відмов гарантує, що ітератор негайно завершує роботу, якщо виявляє, що будь-яка модифікація колекції призведе до аномальної поведінки в майбутньому.

Швидка невдача Функція гарантує, що якщо ітератор відчуває, що модифікація колекції призведе до аномальної поведінки в будь-який момент часу в майбутньому, він негайно завершується помилкою.

приклад:

Java




// Java code to demonstrate remove> // case in Fail-fast iterators> > import> java.io.*;> import> java.util.ArrayList;> import> java.util.Iterator;> > public> class> GFG {> >public> static> void> main(String[] args)> >{> >ArrayList arr =>new> ArrayList();> >arr.add(>1>);> >arr.add(>2>);> >arr.add(>3>);> >arr.add(>4>);> >arr.add(>5>);> > >Iterator it = arr.iterator();> >while> (it.hasNext()) {> >if> (it.next() ==>2>) {> >// will not throw Exception> >it.remove();> >}> >}> > >System.out.println(arr);> > >it = arr.iterator();> >while> (it.hasNext()) {> >if> (it.next() ==>3>) {> >// will throw Exception on> >// next call of next() method> >arr.remove(>3>);> >}> >}> >}> }>

>

>

Вихід:

[1, 3, 4, 5] Exception in thread 'main' java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at FailFastExample.main(FailFastExample.java:28)>

Висновок

Колекції Java це важливо розуміти розробникам або програмістам Java, оскільки Java широко використовується в різних галузях. Для розробників важливо добре розуміти основні концепції колекцій Java. Java є однією з найпоширеніших мов у провідних компаніях, таких як Uber , Airbnb , Google , Netflix , Instagram , Spotify, Amazon , і т. д. Щоб потрапити в ці компанії чи будь-які інші ІТ-компанії, вам потрібно оволодіти цими запитаннями для співбесід Java Collections, які найчастіше ставлять, щоб зламати їхнє онлайн-оцінювання та технічну співбесіду на основі Java.

Якщо ви хочете потренуватися в питаннях програмування, Програми колекції JAVA може бути корисним ресурсом.

Запитання для співбесіди про колекції Java – поширені запитання

1. Що таке колекції в питаннях співбесіди на Java?

Колекція в Java — це структура, яка використовується для зберігання та керування колекціями об’єктів.

2. Що таке 4 класи колекції в Java?

У Java є багато колекцій, але найчастіше використовуються такі колекції:

  1. ArrayList
  2. LinkedList
  3. HashSet
  4. Стек

3. Чи може HashMap мати дублікати ключів?

Ні, HashMap не може мати дублікати ключів. Оскільки HashMap є однією з колекцій у Java, він зберігає значення у формі ключ-значення, і до кожного ключа прикріплено власне значення. Отже, оскільки жоден ключ не може мати два значення, ми не можемо мати дублікати ключів у HashMap.

4. Чому масив не є колекцією?

Масив не є колекцією, це все через різницю у функціональності між колекціями та масивами, деякі з яких згадуються нижче:

Третя нормальна форма
  • Розмір масиву не можна змінити після оголошення
  • Масиви можуть містити лише елементи однорідного типу даних.
  • Масив може містити як примітивні типи даних, так і об’єкти, тоді як у колекціях він може містити лише об’єкти-огортки.