Коллекции в Java. Часть 4.
Методы Collection.
У коллекций, реализующих интерфейс Collection существуют различные методы, необходимые нам для работы с этими коллекциями. Вот самые распространенные:
add(item) — добавляет элемент item в коллекцию;
addAll(collection) — добавляет в коллекцию другую коллекцию, ту, что указана в скобках;
contains(item) — возвращает true или false в зависимости от того, есть ли в коллекции элемент item;
containsAll(collection) — работает так же, как предыдущий, но проверяет наличие в коллекции не элемента, а другой коллекции;
remove(item) — удаляет из коллекции указанный элемент;
retainAll(collection) — удаляет из коллекции указанную в скобках коллекцию. Обратите внимание: retainAll, не removeAll;
clear() — очищает коллекцию, то есть удаляет из нее все элементы;
size() — выдает количество элементов в коллекции в формате целого числа;
isEmpty() — возвращает true или false в зависимости от того, пуста ли коллекция;
toArray() — превращает коллекцию в массив.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Методы Collection.
У коллекций, реализующих интерфейс Collection существуют различные методы, необходимые нам для работы с этими коллекциями. Вот самые распространенные:
add(item) — добавляет элемент item в коллекцию;
addAll(collection) — добавляет в коллекцию другую коллекцию, ту, что указана в скобках;
contains(item) — возвращает true или false в зависимости от того, есть ли в коллекции элемент item;
containsAll(collection) — работает так же, как предыдущий, но проверяет наличие в коллекции не элемента, а другой коллекции;
remove(item) — удаляет из коллекции указанный элемент;
retainAll(collection) — удаляет из коллекции указанную в скобках коллекцию. Обратите внимание: retainAll, не removeAll;
clear() — очищает коллекцию, то есть удаляет из нее все элементы;
size() — выдает количество элементов в коллекции в формате целого числа;
isEmpty() — возвращает true или false в зависимости от того, пуста ли коллекция;
toArray() — превращает коллекцию в массив.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👨💻4👍3
Что делает ключевое слово DISTINCT в SQL?
Anonymous Quiz
8%
Фильтрует строки, возвращаемые командой SELECT
1%
Определяет столбцы, которые необходимо получить
68%
Удаляет повторяющиеся строки из набора результатов
16%
Упорядочивает результаты в порядке возрастания
8%
Посмотреть ответ
✍3👍2👨💻1
Для каких целей может быть использован формат данных JSON?
Anonymous Quiz
2%
Хранение данных
5%
Отправка данных на сервер
5%
Получение данных с сервера
86%
Всё вышеперечисленное
2%
Посмотреть ответ
✍2🔥2👍1👨💻1
Коллекции в Java. Часть 5.
Интерфейс List и его реализации — ArrayList и LinkedList.
List – интерфейс, который традиционно рассматривают первым и которым пользуются чаще всего.
Название переводится как «список»: интерфейс представляет собой упорядоченную коллекцию данных, похожую на массив. Это значит, что у его элементов есть порядковые номера, показывающие их расположение в списке, – индексы. Но, в отличие от массива, List динамический, о чем я говорил выше, — в нем можно изменять количество элементов.
Интерфейс List имеет две стандартные реализации — ArrayList и LinkedList.
Смысл в том, что можно написать и другие реализации, но в JDK уже есть две, которые доступны «из коробки».
ArrayList содержит внутри себя массив, длина которого будет увеличиваться автоматически при добавлении в него новых элементов.
Вторая имплементация интерфейса List — класс LinkedList. Это список с двумя связями, где каждый элемент содержит ссылку на предшествующий и следующий элементы списка. Только у первого элемента ссылка на предшествующий элемент будет null, и ссылка у последнего элемента коллекции на следующий элемент будет тоже null, что вполне логично, согласны?
Методы у них одинаковые, но действия с такими списками различаются сложностью выполнения и скоростью.
Методы add() и remove() в связанном списке LinkedList имеют фиксированную скорость выполнения, поэтому оптимальнее. А вот обращение к элементу по индексу быстрее в ArrayList.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Интерфейс List и его реализации — ArrayList и LinkedList.
List – интерфейс, который традиционно рассматривают первым и которым пользуются чаще всего.
Название переводится как «список»: интерфейс представляет собой упорядоченную коллекцию данных, похожую на массив. Это значит, что у его элементов есть порядковые номера, показывающие их расположение в списке, – индексы. Но, в отличие от массива, List динамический, о чем я говорил выше, — в нем можно изменять количество элементов.
Интерфейс List имеет две стандартные реализации — ArrayList и LinkedList.
Смысл в том, что можно написать и другие реализации, но в JDK уже есть две, которые доступны «из коробки».
ArrayList содержит внутри себя массив, длина которого будет увеличиваться автоматически при добавлении в него новых элементов.
Вторая имплементация интерфейса List — класс LinkedList. Это список с двумя связями, где каждый элемент содержит ссылку на предшествующий и следующий элементы списка. Только у первого элемента ссылка на предшествующий элемент будет null, и ссылка у последнего элемента коллекции на следующий элемент будет тоже null, что вполне логично, согласны?
Методы у них одинаковые, но действия с такими списками различаются сложностью выполнения и скоростью.
Методы add() и remove() в связанном списке LinkedList имеют фиксированную скорость выполнения, поэтому оптимальнее. А вот обращение к элементу по индексу быстрее в ArrayList.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5✍2👨💻2
Коллекции в Java. Часть 6.
Vector и его потомок Stack.
Есть еще две реализации, о которых говорят реже. Это Vector и его потомок Stack. Vector похож на ArrayList, но сейчас им не рекомендуют пользоваться — он синхронизированный, за счет этого более потокобезопасный, но менее производительный. Исключение — редкие ситуации с высокими требованиями к потоковой безопасности.
Stack — это стек, работающий по принципу LIFO (last in, first out). Доступ начинается с того элемента, который добавлен в структуру последним, как взятие верхней карты из колоды. Его же быстрее всего можно удалить. Для просмотра последнего элемента есть метод peek(), для просмотра с удалением — pop(), а для добавления элемента в конец — push().
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Vector и его потомок Stack.
Есть еще две реализации, о которых говорят реже. Это Vector и его потомок Stack. Vector похож на ArrayList, но сейчас им не рекомендуют пользоваться — он синхронизированный, за счет этого более потокобезопасный, но менее производительный. Исключение — редкие ситуации с высокими требованиями к потоковой безопасности.
Stack — это стек, работающий по принципу LIFO (last in, first out). Доступ начинается с того элемента, который добавлен в структуру последним, как взятие верхней карты из колоды. Его же быстрее всего можно удалить. Для просмотра последнего элемента есть метод peek(), для просмотра с удалением — pop(), а для добавления элемента в конец — push().
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3✍2👨💻2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10✍3👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5💯3✍2👍1
Коллекции в Java. Часть 7.
Set и его реализации.
Set, или набор, — это математическое множество, реализованное в языке программирования. Если проще, это коллекция уникальных значений. Ни одно из них не повторяется в рамках одного сета.
Для проверки равенства у такой коллекции есть специальный метод equals().
Коллекция не упорядочена, то есть у ее элементов нет порядковых номеров и четких позиций следования. Это может понадобиться при хранении разных структур данных, например имен пользователей сайта: никнеймы уникальны, а порядковых номеров у них нет.
У Set есть два дочерних интерфейса SortedSet и NavigableSet — соответственно, отсортированный и навигируемый сеты. Фактических реализаций три, и о них стоит поговорить подробнее.
Здесь будет посложнее для понимания)
Часто используется реализация HashSet — это сет или множество, которое не позволяет хранение одинаковых элементов благодаря содержанию в себе объекта HashMap. Он использует для хранения данных хэш-таблицы. Хэш-таблица реализована с помощью HashMap — одной из реализаций интерфейса Map, о котором мы поговорим позже.
LinkedHashSet — множество, подобное HashSet, в котором элементы объединены между собой в порядковый список. В этом случае элементы хранятся в том же порядке, в котором и добавляются (благодаря содержанию в себе объекта LinkedHashMap).
TreeSet — коллекция, которая использует для хранения элементов упорядоченное по значениям дерево. TreeSet содержит в себе TreeMap — коллекцию, которая использует для хранения своих элементов сбалансированное красно-черное бинарное дерево. Благодаря этому операции add, remove и contains в этой коллекции очень быстрые (относительно алгоритмической сложности). А это — весомое преимущество по сравнению с другими имплементациями интерфейса Set.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Set и его реализации.
Set, или набор, — это математическое множество, реализованное в языке программирования. Если проще, это коллекция уникальных значений. Ни одно из них не повторяется в рамках одного сета.
Для проверки равенства у такой коллекции есть специальный метод equals().
Коллекция не упорядочена, то есть у ее элементов нет порядковых номеров и четких позиций следования. Это может понадобиться при хранении разных структур данных, например имен пользователей сайта: никнеймы уникальны, а порядковых номеров у них нет.
У Set есть два дочерних интерфейса SortedSet и NavigableSet — соответственно, отсортированный и навигируемый сеты. Фактических реализаций три, и о них стоит поговорить подробнее.
Здесь будет посложнее для понимания)
Часто используется реализация HashSet — это сет или множество, которое не позволяет хранение одинаковых элементов благодаря содержанию в себе объекта HashMap. Он использует для хранения данных хэш-таблицы. Хэш-таблица реализована с помощью HashMap — одной из реализаций интерфейса Map, о котором мы поговорим позже.
LinkedHashSet — множество, подобное HashSet, в котором элементы объединены между собой в порядковый список. В этом случае элементы хранятся в том же порядке, в котором и добавляются (благодаря содержанию в себе объекта LinkedHashMap).
TreeSet — коллекция, которая использует для хранения элементов упорядоченное по значениям дерево. TreeSet содержит в себе TreeMap — коллекцию, которая использует для хранения своих элементов сбалансированное красно-черное бинарное дерево. Благодаря этому операции add, remove и contains в этой коллекции очень быстрые (относительно алгоритмической сложности). А это — весомое преимущество по сравнению с другими имплементациями интерфейса Set.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👍3👨💻2
✍4👍2👨💻2
Коллекции в Java. Часть 8.
Третий прямой наследник Collection — очередь, или Queue и его реализации.
Очередь и стек — два похожих формата, которые различаются принципом доступа к элементам.
Если в стеке мы имеем быстрый доступ к последним добавленным частям, то в очереди — к тем, которые были добавлены первыми. Такой принцип называется FIFO (first in, first out) и действительно напоминает живую очередь.
Соответственно, быстро получить и удалить элемент можно из начала очереди, а добавить — только в ее конец.
У Queue две основных реализации. Одна из них — PriorityQueue, прямая реализация, которая по умолчанию сортирует элементы в порядке их появления в очереди. Но это можно переопределить в конструкторе — специальном методе для создания объекта. Там можно задать связь с интерфейсом Comparator, который будет сравнивать элементы очереди и располагать их в зависимости от значений.
Вторая реализация чуть сложнее. У Queue есть потомок под названием Deque (читается как «дек»). Он расширяет Queue и добавляет возможность создавать коллекции, работающие по принципу LIFO — мы говорили о нем выше. По сути, получается двунаправленная очередь. Так вот вторая реализация называется ArrayDeque и технически является реализацией интерфейса Deque, а не Queue. Но Deque — потомок Queue, так что ArrayDeque периодически называют реализацией Queue.
Упомянутый выше LinkedList — реализация, принадлежащая не только List, но и Deque.
В целом, Queue редко используется, достаточно знать, что это и в чем ее суть, чтобы упомянуть это при рассказе на собеседовании о коллекциях в целом.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Третий прямой наследник Collection — очередь, или Queue и его реализации.
Очередь и стек — два похожих формата, которые различаются принципом доступа к элементам.
Если в стеке мы имеем быстрый доступ к последним добавленным частям, то в очереди — к тем, которые были добавлены первыми. Такой принцип называется FIFO (first in, first out) и действительно напоминает живую очередь.
Соответственно, быстро получить и удалить элемент можно из начала очереди, а добавить — только в ее конец.
У Queue две основных реализации. Одна из них — PriorityQueue, прямая реализация, которая по умолчанию сортирует элементы в порядке их появления в очереди. Но это можно переопределить в конструкторе — специальном методе для создания объекта. Там можно задать связь с интерфейсом Comparator, который будет сравнивать элементы очереди и располагать их в зависимости от значений.
Вторая реализация чуть сложнее. У Queue есть потомок под названием Deque (читается как «дек»). Он расширяет Queue и добавляет возможность создавать коллекции, работающие по принципу LIFO — мы говорили о нем выше. По сути, получается двунаправленная очередь. Так вот вторая реализация называется ArrayDeque и технически является реализацией интерфейса Deque, а не Queue. Но Deque — потомок Queue, так что ArrayDeque периодически называют реализацией Queue.
Упомянутый выше LinkedList — реализация, принадлежащая не только List, но и Deque.
В целом, Queue редко используется, достаточно знать, что это и в чем ее суть, чтобы упомянуть это при рассказе на собеседовании о коллекциях в целом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4✍2👨💻2
Коллекции в Java. Часть 9.
Интерфейс Map.
Интерфейс Map технически не относится к иерархии коллекций Collection. Он не является потомком Iterable и, соответственно, Collection, у него нет общих для коллекций методов, это другой вид объекта, и методы у него свои. Но я решил упомянуть о нем именно в контексте коллекций, потому что они часто объясняются и используются вместе. При этом Map — другой вид объекта, и принцип построения у него отличается.
На собеседованиях на Junior Java разработчика и стажера, когда вы рассказываете о иерархии Collection, обязательно упоминайте об интерфейсе Map! Это неотъемлемая часть структур данных в Java, да и не только в Java.
Map, «карта», он же «словарь» или ассоциативный массив — это список формата «ключ-значение». Представьте себе таблицу, где данные указаны, например, в таком формате:
Имя: Иван
Фамилия: Иванов
«Имя» и «Фамилия» будут ключами, а «Иван» и «Иванов» — значениями. По такому принципу данные хранятся в Map: вместо индексов у них ключи. Map не итерируется, потому что сложно сказать, какой из ключей можно назвать «первым», а какой «вторым», — это неупорядоченная структура.
Интерфейс Map.
Интерфейс Map технически не относится к иерархии коллекций Collection. Он не является потомком Iterable и, соответственно, Collection, у него нет общих для коллекций методов, это другой вид объекта, и методы у него свои. Но я решил упомянуть о нем именно в контексте коллекций, потому что они часто объясняются и используются вместе. При этом Map — другой вид объекта, и принцип построения у него отличается.
На собеседованиях на Junior Java разработчика и стажера, когда вы рассказываете о иерархии Collection, обязательно упоминайте об интерфейсе Map! Это неотъемлемая часть структур данных в Java, да и не только в Java.
Map, «карта», он же «словарь» или ассоциативный массив — это список формата «ключ-значение». Представьте себе таблицу, где данные указаны, например, в таком формате:
Имя: Иван
Фамилия: Иванов
«Имя» и «Фамилия» будут ключами, а «Иван» и «Иванов» — значениями. По такому принципу данные хранятся в Map: вместо индексов у них ключи. Map не итерируется, потому что сложно сказать, какой из ключей можно назвать «первым», а какой «вторым», — это неупорядоченная структура.
👍3✍2❤1👨💻1