Коллекции в Java. Часть 2.
Что такое Java Collections Framework?
Java Collections Framework — это часть JDK, или Java Development Kit, в которой описаны и хранятся коллекции, их устройство и иерархия.
Несмотря на название «фреймворк», это не отдельный инструмент, а одна из важных частей языка Java, точнее, набора инструментов для него. Там содержатся интерфейсы, которые описывают коллекции, и практические реализации.
Интерфейс — это как бы «схема», теоретическое описание поведения объектов. В нем содержатся методы, которые есть у всех его реализаций. А реализация — потомок интерфейса, практическая структура: такой объект можно создать и пользоваться им.
Интерфейс по определению похож на класс, но отличается от него тем, что может хранить только поведение — методы. У него, в отличие от класса, не может быть атрибутов — внутренних переменных, хранящих состояние.
У интерфейсов есть иерархия — более специфические наследуются от более общих. Это значит, что у них есть методы «предка», но есть и свои, специфичные особенности хранения и методы. А реализации — конечные наследники интерфейсов.
Получается наглядная иерархическая схема, где одно вытекает из другого.
Давайте теперь на картинке рассмотрим разные виды интерфейсов и их практические реализации. Попробуйте догадаться, что из представленного является интерфейсами, а что реализациями? А позже мы разберем это более подробно и я все поясню.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Что такое Java Collections Framework?
Java Collections Framework — это часть JDK, или Java Development Kit, в которой описаны и хранятся коллекции, их устройство и иерархия.
Несмотря на название «фреймворк», это не отдельный инструмент, а одна из важных частей языка Java, точнее, набора инструментов для него. Там содержатся интерфейсы, которые описывают коллекции, и практические реализации.
Интерфейс — это как бы «схема», теоретическое описание поведения объектов. В нем содержатся методы, которые есть у всех его реализаций. А реализация — потомок интерфейса, практическая структура: такой объект можно создать и пользоваться им.
Интерфейс по определению похож на класс, но отличается от него тем, что может хранить только поведение — методы. У него, в отличие от класса, не может быть атрибутов — внутренних переменных, хранящих состояние.
У интерфейсов есть иерархия — более специфические наследуются от более общих. Это значит, что у них есть методы «предка», но есть и свои, специфичные особенности хранения и методы. А реализации — конечные наследники интерфейсов.
Получается наглядная иерархическая схема, где одно вытекает из другого.
Давайте теперь на картинке рассмотрим разные виды интерфейсов и их практические реализации. Попробуйте догадаться, что из представленного является интерфейсами, а что реализациями? А позже мы разберем это более подробно и я все поясню.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3✍2🤓2👨💻2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7💯3✍1🔥1
Коллекции в Java. Часть 3.
И так, на картинке представлена структурная схема Java Collection Framework, которую нужно обязательно знать, что даже если вас разбудить ночью и спросить ее, вы могли рассказать. Потому что на собеседованиях Junior Java разработчика или стажера обязательно будут вопросы по этой схеме.
Iterable
Это основной, корневой интерфейс. От него наследуются все прочие. Он означает, что объект итерируемый.
Так называются сущности, элементы которых можно перечислять по очереди: по индексам, названию или расположению в структуре. То есть это практически все сложные объекты, где хранится множество значений.
Есть только одна сущность, которая не наследуется от Iterable, но тем не менее часто упоминается вместе с коллекциями и входит в Collections Framework. Это Map, и мы поговорим об этом одном из следующих постах.
Collection
Часто пишут, что Collection — это основной и самый главный интерфейс. Технически это не совсем так, потому что он все же наследуется от Iterable, но фактически считается базовым. Он описывает понятие коллекции и тем самым расширяет возможности итерируемого объекта.
При этом абстрактного объекта Collection быть не может — реальные сущности должны относиться к одному из потомков этого интерфейса, то есть быть очередью, списком или набором.
Объекты, которые относятся к коллекциям, можно перебирать в цикле for-each. У них есть ряд общих методов, актуальных для всех видов коллекций. Исключение — только Map, который в целом выпадает из этой иерархии.
На картинке сплошными стрелками показан механизм наследования, а пунктирными механизм имплементации.
Какие методы есть у реализаций и чем эти реализации отличаются друг от друга? Какие используются чаще всего? Об этом в следующих постах, чтобы не перегружать наш драгоценный мозг и разложить информацию по полочкам!
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
И так, на картинке представлена структурная схема Java Collection Framework, которую нужно обязательно знать, что даже если вас разбудить ночью и спросить ее, вы могли рассказать. Потому что на собеседованиях Junior Java разработчика или стажера обязательно будут вопросы по этой схеме.
Iterable
Это основной, корневой интерфейс. От него наследуются все прочие. Он означает, что объект итерируемый.
Так называются сущности, элементы которых можно перечислять по очереди: по индексам, названию или расположению в структуре. То есть это практически все сложные объекты, где хранится множество значений.
Есть только одна сущность, которая не наследуется от Iterable, но тем не менее часто упоминается вместе с коллекциями и входит в Collections Framework. Это Map, и мы поговорим об этом одном из следующих постах.
Collection
Часто пишут, что Collection — это основной и самый главный интерфейс. Технически это не совсем так, потому что он все же наследуется от Iterable, но фактически считается базовым. Он описывает понятие коллекции и тем самым расширяет возможности итерируемого объекта.
При этом абстрактного объекта Collection быть не может — реальные сущности должны относиться к одному из потомков этого интерфейса, то есть быть очередью, списком или набором.
Объекты, которые относятся к коллекциям, можно перебирать в цикле for-each. У них есть ряд общих методов, актуальных для всех видов коллекций. Исключение — только Map, который в целом выпадает из этой иерархии.
На картинке сплошными стрелками показан механизм наследования, а пунктирными механизм имплементации.
Какие методы есть у реализаций и чем эти реализации отличаются друг от друга? Какие используются чаще всего? Об этом в следующих постах, чтобы не перегружать наш драгоценный мозг и разложить информацию по полочкам!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👨💻3✍2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7✍2👍2💯2
Коллекции в 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