Java: Структуры данных (Модуль 0. Урок 1. List/Set/Array).
В первом модуле будем говорить об абстрактных структурах данных (СД).
Что же такое структура данных (СД)?
СД - способ организации информации в компьютере таким образом, чтобы потом ее эффективно использовать.
Простыми словами - представление логической связи между отдельными элементами определенного типа.
Каждая СД работает с записями. Один объект внутри структуры данных - одна запись. Одна запись может быть n-размерной.
По мерности записей на один объект, СД делят на:
0 - юнит/unit (но таких СД нет);
1 - синглтон/singleton - хранит только объект. Это может быть число, строка, да вообще любой объект;
2 - пара/couple, pair, dual, twin, product - хранит не только сам объект, но и дополнительную, связанную с ним, информацию, которая не является частью этого объекта. Это может быть ключ к объекту или некий другой объект;
3 - трипл/triple...
n - ...
Рассмотрим пример:
Какую СД выбрать?
Задача 1. Составить список всех студентов в группе.
Задача 2. Список всех аудиторий в корпусе университета.
Какого размера будет запись в СД?
Один студент - одна запись в СД, но форма записи может быть многомерной. Для списка аудиторий нам точно triplet не пригодится. Поэтому размер записи для студентов / аудиторий - 1 / 1
СД для хранения или для обработки?
- хранение - просматривать, изменять, сохранять запись.
- обработка - достать и удалить.
Список студентов нужно как-то обрабатывать, а список аудиторий просто для учета, поэтому: обрабатывать **/** хранить.
Разрешаем ли мы хранить дубликаты?
Фамилии, имена могут совпадать, в отличии от номеров аудиторий в одном корпусе, поэтому: да / нет
СД будет фиксированного или изменяемого размера? Для обоих задач — изменяемого.
Выбираем СД:
для учета студентов — list (например, его имплементация ArrayList);
для учета аудиторий — set (например, его имплементация TreeSet)
Почитайте про каждую из этих структур данных из примера. Возможно у вас будут иные обоснованные предложения той или иной СД для этого примера? Обсуждение приветствуется :)
Классификация структур данных
Collections.pdf (https://storage.googleapis.com/hexlet/java/collections/m0e1/CollectionPDF.pdf)
Полезные ссылки:
Структура данных (https://goo.gl/UZzZ1g)
Абстрактный тип данных (https://goo.gl/ICcXJc)
List (https://goo.gl/QseuVG)
Array (https://goo.gl/2mmpN5)
Set (https://goo.gl/2dwBy5)
Наши ссылки:
• Discord-чат академии: https://bit.ly/2K6XQQ2
• VK - https://vk.com/kovacademy
• FB - https://facebook.com/groups/kovalevskyi
• Twitter - https://twitter.com/KovAcademy
• YouTube - https://youtube.com/KovalevskyiAcademy
• LinkedIn - https://linkedin.com/groups/5119016/
• Patreon - https://patreon.com/b0noi
• Web site - http://kovalevskyi.academy/
Видео Java: Структуры данных (Модуль 0. Урок 1. List/Set/Array). канала Kovalevskyi Academy
Что же такое структура данных (СД)?
СД - способ организации информации в компьютере таким образом, чтобы потом ее эффективно использовать.
Простыми словами - представление логической связи между отдельными элементами определенного типа.
Каждая СД работает с записями. Один объект внутри структуры данных - одна запись. Одна запись может быть n-размерной.
По мерности записей на один объект, СД делят на:
0 - юнит/unit (но таких СД нет);
1 - синглтон/singleton - хранит только объект. Это может быть число, строка, да вообще любой объект;
2 - пара/couple, pair, dual, twin, product - хранит не только сам объект, но и дополнительную, связанную с ним, информацию, которая не является частью этого объекта. Это может быть ключ к объекту или некий другой объект;
3 - трипл/triple...
n - ...
Рассмотрим пример:
Какую СД выбрать?
Задача 1. Составить список всех студентов в группе.
Задача 2. Список всех аудиторий в корпусе университета.
Какого размера будет запись в СД?
Один студент - одна запись в СД, но форма записи может быть многомерной. Для списка аудиторий нам точно triplet не пригодится. Поэтому размер записи для студентов / аудиторий - 1 / 1
СД для хранения или для обработки?
- хранение - просматривать, изменять, сохранять запись.
- обработка - достать и удалить.
Список студентов нужно как-то обрабатывать, а список аудиторий просто для учета, поэтому: обрабатывать **/** хранить.
Разрешаем ли мы хранить дубликаты?
Фамилии, имена могут совпадать, в отличии от номеров аудиторий в одном корпусе, поэтому: да / нет
СД будет фиксированного или изменяемого размера? Для обоих задач — изменяемого.
Выбираем СД:
для учета студентов — list (например, его имплементация ArrayList);
для учета аудиторий — set (например, его имплементация TreeSet)
Почитайте про каждую из этих структур данных из примера. Возможно у вас будут иные обоснованные предложения той или иной СД для этого примера? Обсуждение приветствуется :)
Классификация структур данных
Collections.pdf (https://storage.googleapis.com/hexlet/java/collections/m0e1/CollectionPDF.pdf)
Полезные ссылки:
Структура данных (https://goo.gl/UZzZ1g)
Абстрактный тип данных (https://goo.gl/ICcXJc)
List (https://goo.gl/QseuVG)
Array (https://goo.gl/2mmpN5)
Set (https://goo.gl/2dwBy5)
Наши ссылки:
• Discord-чат академии: https://bit.ly/2K6XQQ2
• VK - https://vk.com/kovacademy
• FB - https://facebook.com/groups/kovalevskyi
• Twitter - https://twitter.com/KovAcademy
• YouTube - https://youtube.com/KovalevskyiAcademy
• LinkedIn - https://linkedin.com/groups/5119016/
• Patreon - https://patreon.com/b0noi
• Web site - http://kovalevskyi.academy/
Видео Java: Структуры данных (Модуль 0. Урок 1. List/Set/Array). канала Kovalevskyi Academy
Показать
Комментарии отсутствуют
Информация о видео
Другие видео канала
Алгоритмы и Структуры Данных. Урок 1: Введение. Числа Фибоначчи.HashMap Java собеседованиеДелаем вывод информации с помощью JavaScriptData Structures and Algorithms for BeginnersАлгоритмы и структуры данных простыми словами. Зачем учить алгоритмы? #codonaftПонимание Lambda выражений в Java / Зачем они нужны и какие проблемы решают LambdaОбзорная лекция по Java6 важных структур данныхДетальный разбор примитивных типов данных в Java - пойми как устроены примитивы #javaБинарное дерево. Полное понимание! Динамические структуры данных #3Python ищем заказы на фриланс и выполняем их. Python requests, lxml, csvJava. Класс Object. Разбор вопросов на собеседование.Собеседование Java Spring - Разбор вопросов с собеседований на Java DeveloperАлгоритмы и структуры данных 1. Массивы и связные списки.A Complete Overview of Quicksort (Data Structures & Algorithms #11)Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer9 Compare и Comparator в JavaСтруктуры данных в Java и KotlinСтруктуры данных - Linked List