В чем разница между классами java.util.Collection и java.util.Collections?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍5👎1
Ответ на "В чем разница между классами java.util.Collection и java.util.Collections?"
#вопросы_с_собеседований
java.util.Collections - набор статических методов для работы с коллекциями.java.util.Collection - один из основных интерфейсов Java Collections Framework.#вопросы_с_собеседований
Чем различаются Enumeration и Iterator?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Чем различаются Enumeration и Iterator?"
Хотя оба интерфейса и предназначены для обхода коллекций между ними имеются существенные различия:
• с помощью
• в
•
#вопросы_с_собеседований
Хотя оба интерфейса и предназначены для обхода коллекций между ними имеются существенные различия:
• с помощью
Enumeration нельзя добавлять/удалять элементы;• в
Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNext(), Enumeration.nextElement() соответствует Iterator.next() и т.д);•
Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.#вопросы_с_собеседований
🔥6
Сравните Iterator и ListIterator.
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍4
Ответ на "Сравните Iterator и ListIterator."
•
•
•
• При помощи
#вопросы_с_собеседований
•
ListIterator расширяет интерфейс Iterator
• ListIterator может быть использован только для перебора элементов коллекции List;•
Iterator позволяет перебирать элементы только в одном направлении, при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous();•
ListIterator не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous() и next().• При помощи
ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.#вопросы_с_собеседований
🔥9👍1
Как поведёт себя коллекция, если вызвать iterator.remove()?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Как поведёт себя коллекция, если вызвать iterator.remove()?"
Если вызову
#вопросы_с_собеседований
Если вызову
iterator.remove() предшествовал вызов iterator.next(), то iterator.remove() удалит элемент коллекции, на который указывает итератор, в противном случае будет выброшено IllegalStateException().#вопросы_с_собеседований
🔥10
Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?"
При следующем вызове методов итератора будет выброшено
#вопросы_с_собеседований
При следующем вызове методов итератора будет выброшено
ConcurrentModificationException.#вопросы_с_собеседований
Как избежать ConcurrentModificationException во время перебора коллекции?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍1
Ответ на "Как избежать ConcurrentModificationException во время перебора коллекции?"
• Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу
• Использовать
• Преобразовать список в массив и перебирать массив.
• Блокировать изменения списка на время перебора с помощью блока
Отрицательная сторона последних двух вариантов - ухудшение производительности.
#вопросы_с_собеседований
• Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу
fail-safe.• Использовать
ConcurrentHashMap и CopyOnWriteArrayList.• Преобразовать список в массив и перебирать массив.
• Блокировать изменения списка на время перебора с помощью блока
synchronized.Отрицательная сторона последних двух вариантов - ухудшение производительности.
#вопросы_с_собеседований
👍5
Какая коллекция реализует дисциплину обслуживания FIFO?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Какая коллекция реализует дисциплину обслуживания FIFO?"
FIFO, First-In-First-Out («первым пришел-первым ушел») - по этому принципу построена коллекция
#вопросы_с_собеседований
FIFO, First-In-First-Out («первым пришел-первым ушел») - по этому принципу построена коллекция
Queue.#вопросы_с_собеседований
Зачем добавили ArrayList, если уже был Vector?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Книги по Java - канал, где вы можете бесплатно КАЧАТЬ книги по Java программированию в два клика.
- качай книги
- читай
- становись программистом.
- зарабатывай 100-400 тысяч рублей.
Все книги 2019-2023 годов. Много русскоязычных.
Подписывайтесь и качайте: @booksforjava
- качай книги
- читай
- становись программистом.
- зарабатывай 100-400 тысяч рублей.
Все книги 2019-2023 годов. Много русскоязычных.
Подписывайтесь и качайте: @booksforjava
Ответ на "Зачем добавили ArrayList, если уже был Vector?"
• Методы класса
• По умолчанию,
#вопросы_с_собеседований
• Методы класса
Vector синхронизированы, а ArrayList - нет;• По умолчанию,
Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину.Vector это устаревший класс и его использование не рекомендовано.#вопросы_с_собеседований
👍4👎1
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?"
ArrayList:
• доступ к произвольному элементу по индексу за константное время
• доступ к элементам по значению за линейное время
• вставка в конец в среднем производится за константное время
• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
• на добавление и удаление в начало или конец списка потребуется константное
• вставка или удаление в/из произвольного место константное
• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
#вопросы_с_собеседований
ArrayList это список, реализованный на основе массива, а LinkedList — это классический двусвязный список, основанный на объектах с ссылками между ними.ArrayList:
• доступ к произвольному элементу по индексу за константное время
O(1);• доступ к элементам по значению за линейное время
O(N);• вставка в конец в среднем производится за константное время
O(1);• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
capacity) не изменяется);• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
O(N);• на добавление и удаление в начало или конец списка потребуется константное
O(1);• вставка или удаление в/из произвольного место константное
O(1);• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.#вопросы_с_собеседований
👍2
Какое худшее время работы метода contains() для элемента, который есть в LinkedList?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍2