HTML Diff
2 added 2 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Коллекция - это…</a><ul><li><a>Кратко о каждом</a></li>
1 <ul><li><a>Коллекция - это…</a><ul><li><a>Кратко о каждом</a></li>
2 </ul></li>
2 </ul></li>
3 <li><a>Понятие множества</a><ul><li><a>Виды</a><ul><li><a>HashSet</a></li>
3 <li><a>Понятие множества</a><ul><li><a>Виды</a><ul><li><a>HashSet</a></li>
4 </ul></li>
4 </ul></li>
5 <li><a>LikesHashSet и TreeSet</a></li>
5 <li><a>LikesHashSet и TreeSet</a></li>
6 </ul></li>
6 </ul></li>
7 <li><a>Сравнение Set со списками</a></li>
7 <li><a>Сравнение Set со списками</a></li>
8 <li><a>Реализации</a></li>
8 <li><a>Реализации</a></li>
9 <li><a>Методы и примеры</a><ul><li><a>Добавление в набор</a></li>
9 <li><a>Методы и примеры</a><ul><li><a>Добавление в набор</a></li>
10 <li><a>Перебор</a><ul><li><a>Через итератор</a></li>
10 <li><a>Перебор</a><ul><li><a>Через итератор</a></li>
11 <li><a>Использование цикла</a></li>
11 <li><a>Использование цикла</a></li>
12 </ul></li>
12 </ul></li>
13 <li><a>Установка размера через Size</a></li>
13 <li><a>Установка размера через Size</a></li>
14 <li><a>Проверка на пустоту</a></li>
14 <li><a>Проверка на пустоту</a></li>
15 <li><a>Содержание компонента</a></li>
15 <li><a>Содержание компонента</a></li>
16 </ul></li>
16 </ul></li>
17 </ul><p>Java - популярный язык разработки, позволяющий работать, среди всего прочего, с интерфейсами и коллекциями. Соответствующие компоненты пригодятся как новичкам, так и более опытным специалистам при создании качественного программного обеспечения.</p>
17 </ul><p>Java - популярный язык разработки, позволяющий работать, среди всего прочего, с интерфейсами и коллекциями. Соответствующие компоненты пригодятся как новичкам, так и более опытным специалистам при создании качественного программного обеспечения.</p>
18 <p>Далее предстоит изучить коллекцию set в Java, а также получше разобраться в интерфейсах и их особенностях. Соответствующие сведения ориентированы на тех, кто уже умеет немного программировать на Джаве.</p>
18 <p>Далее предстоит изучить коллекцию set в Java, а также получше разобраться в интерфейсах и их особенностях. Соответствующие сведения ориентированы на тех, кто уже умеет немного программировать на Джаве.</p>
19 <h2>Коллекция - это…</h2>
19 <h2>Коллекция - это…</h2>
20 <p>Коллекция - это набор однородных компонентов. Так называются несколько похожих друг на друга структур данных. Сложные типы, которые позволяют хранить большое количество значений - как в таблице или списке.</p>
20 <p>Коллекция - это набор однородных компонентов. Так называются несколько похожих друг на друга структур данных. Сложные типы, которые позволяют хранить большое количество значений - как в таблице или списке.</p>
21 <p>Для хранения данных Java использует массивы, но это не всегда удобно. Основной проблемой использования таких компонентов является фиксированная длина. Проблему удается решить за счет коллекций Джавы.</p>
21 <p>Для хранения данных Java использует массивы, но это не всегда удобно. Основной проблемой использования таких компонентов является фиксированная длина. Проблему удается решить за счет коллекций Джавы.</p>
22 <p>Суть гибких по размеру наборов элементов заключается в том, что классы в коллекции отвечают за реализацию различных алгоритмов и структур информации:</p>
22 <p>Суть гибких по размеру наборов элементов заключается в том, что классы в коллекции отвечают за реализацию различных алгоритмов и структур информации:</p>
23 <ul><li>множество;</li>
23 <ul><li>множество;</li>
24 <li>дерево;</li>
24 <li>дерево;</li>
25 <li>очередь и так далее.</li>
25 <li>очередь и так далее.</li>
26 </ul><p>The collections образовывают логичную структуру. В основе каждого такого компонента языка заложено использование того или иного интерфейса. Соответствующий элемент отвечает за определение базового функционала in the collection.</p>
26 </ul><p>The collections образовывают логичную структуру. В основе каждого такого компонента языка заложено использование того или иного интерфейса. Соответствующий элемент отвечает за определение базового функционала in the collection.</p>
27 <p>Инструменты для работы с the collection собраны в Java Collection Framework (JCF). Далее предстоит изучить этот фреймворк более подробно. Особое внимание необходимо уделить set, который позволяет использовать "неупорядоченное множество".</p>
27 <p>Инструменты для работы с the collection собраны в Java Collection Framework (JCF). Далее предстоит изучить этот фреймворк более подробно. Особое внимание необходимо уделить set, который позволяет использовать "неупорядоченное множество".</p>
28 <p>Выше представлена структура имеющихся the collections в Java. Каждый элемент здесь имеет собственную область применения и особенности.</p>
28 <p>Выше представлена структура имеющихся the collections в Java. Каждый элемент здесь имеет собственную область применения и особенности.</p>
29 <h3>Кратко о каждом</h3>
29 <h3>Кратко о каждом</h3>
30 <p>Изучая interface set, необходимо рассмотреть и другие компоненты JCF. Соответствующий фреймворк включает в себя:</p>
30 <p>Изучая interface set, необходимо рассмотреть и другие компоненты JCF. Соответствующий фреймворк включает в себя:</p>
31 <ol><li>The List - неупорядоченный список. В ней у каждого компонента имеется индекс. Дубликаты значений поддерживаются системой.</li>
31 <ol><li>The List - неупорядоченный список. В ней у каждого компонента имеется индекс. Дубликаты значений поддерживаются системой.</li>
32 <li>The Queue. Такое название получила очередь. Соответствующий список поддерживает добавление компонентов только in the end (в конец). Удаление составляющих происходит исключительно спереди. Здесь реализуется правило "Первым пришел - первым ушел".</li>
32 <li>The Queue. Такое название получила очередь. Соответствующий список поддерживает добавление компонентов только in the end (в конец). Удаление составляющих происходит исключительно спереди. Здесь реализуется правило "Первым пришел - первым ушел".</li>
33 <li>The Deque. Это очередь и стек. Компоненты здесь можно добавлять как в начало, так и в конец. Аналогично ситуация обстоит с удалением.</li>
33 <li>The Deque. Это очередь и стек. Компоненты здесь можно добавлять как в начало, так и в конец. Аналогично ситуация обстоит с удалением.</li>
34 <li>The Map. Пары "ключ-значение". Ключи of code уникальны. Параметры могут повторяться. В map порядок компонентов не гарантируется. Используется такая коллекция для поиска объектов по ключу.</li>
34 <li>The Map. Пары "ключ-значение". Ключи of code уникальны. Параметры могут повторяться. В map порядок компонентов не гарантируется. Используется такая коллекция для поиска объектов по ключу.</li>
35 <li>Set in Java. Коллекция, которая включает в себя (contains) неупорядоченное множество компонентов. Здесь один и тот же объект не может встречаться более одного раза. Это стандартный интерфейс, а также подтип Collection.</li>
35 <li>Set in Java. Коллекция, которая включает в себя (contains) неупорядоченное множество компонентов. Здесь один и тот же объект не может встречаться более одного раза. Это стандартный интерфейс, а также подтип Collection.</li>
36 </ol><p>Далее Set будет изучен более подробно. Связано это с тем, что set interface используются в разработке очень часто.</p>
36 </ol><p>Далее Set будет изучен более подробно. Связано это с тем, что set interface используются в разработке очень часто.</p>
37 <h2>Понятие множества</h2>
37 <h2>Понятие множества</h2>
38 <p>Множество - способ хранения данных. Он напоминает массив и списки. Ключевое особенностью множества является то, что оно включает в себя только уникальные значения. Именно так работает sets.</p>
38 <p>Множество - способ хранения данных. Он напоминает массив и списки. Ключевое особенностью множества является то, что оно включает в себя только уникальные значения. Именно так работает sets.</p>
39 <p>Выше - множество set, которое состоит из int. Оно включает в себя 5 компонентов. Добавить туда единицу не получится. Это связано с тем, что int = 1 уже имеется в заданном "перечне".</p>
39 <p>Выше - множество set, которое состоит из int. Оно включает в себя 5 компонентов. Добавить туда единицу не получится. Это связано с тем, что int = 1 уже имеется в заданном "перечне".</p>
40 <p>Set interfaces обеспечивают уникальность of the elements. Дублирующие записи в соответствующих множествах исключены.</p>
40 <p>Set interfaces обеспечивают уникальность of the elements. Дублирующие записи в соответствующих множествах исключены.</p>
41 <h3>Виды</h3>
41 <h3>Виды</h3>
42 <p>Java new set - это интерфейс. Он поддерживает несколько реализации in the programming language:</p>
42 <p>Java new set - это интерфейс. Он поддерживает несколько реализации in the programming language:</p>
43 <p>Основных видов set три:</p>
43 <p>Основных видов set три:</p>
44 <ul><li>HashSet;</li>
44 <ul><li>HashSet;</li>
45 <li>LinkedHashSet;</li>
45 <li>LinkedHashSet;</li>
46 <li>TreeSet.</li>
46 <li>TreeSet.</li>
47 </ul><p>Остальные множества специалистам требуются на практике редко, поэтому они изучены далее не будут.</p>
47 </ul><p>Остальные множества специалистам требуются на практике редко, поэтому они изучены далее не будут.</p>
48 <h4><em>HashSet</em></h4>
48 <h4><em>HashSet</em></h4>
49 <p>Interface in set часто использует класс HashSet. Он применяется для хранения информации в хеш-таблице. Так называется структура информации (structure of information), в которой все элементы (the elements) помещаются в бакеты (buckets). Они соответствуют результатам вычисления of хеш-функции.</p>
49 <p>Interface in set часто использует класс HashSet. Он применяется для хранения информации в хеш-таблице. Так называется структура информации (structure of information), в которой все элементы (the elements) помещаются в бакеты (buckets). Они соответствуют результатам вычисления of хеш-функции.</p>
50 <p>Пример - администратор в гостинице. Он может класть ключ в коробку с номером from 1 util 9. Для этого используется алгоритм: складываются все цифры номера. Происходит это до тех пор, пока не получится одноразрядное число.</p>
50 <p>Пример - администратор в гостинице. Он может класть ключ в коробку с номером from 1 util 9. Для этого используется алгоритм: складываются все цифры номера. Происходит это до тех пор, пока не получится одноразрядное число.</p>
51 <p>В предложенном примере заданный алгоритм расчетов - это и есть хеш-функция. Результат вычисления - это хеш-код.</p>
51 <p>В предложенном примере заданный алгоритм расчетов - это и есть хеш-функция. Результат вычисления - это хеш-код.</p>
52 <p>В описанном примере ключ от номера 356 попадет в коробку с номером 5. В случае с комнатой 123 - в ящик с подписью 6.</p>
52 <p>В описанном примере ключ от номера 356 попадет в коробку с номером 5. В случае с комнатой 123 - в ящик с подписью 6.</p>
53 <p>Выше - наглядный пример java set of the code. Данный алгоритм применим к расчетам в случае с использованием HashSet. Аналогичным образом можно получить и другие значения.</p>
53 <p>Выше - наглядный пример java set of the code. Данный алгоритм применим к расчетам в случае с использованием HashSet. Аналогичным образом можно получить и другие значения.</p>
54 <p>В new HashSet string добавление (add), поиск (search), а также удаление (remove) элементов происходит за постоянное время. Количество of the element в коллекции не имеет никакого значения.</p>
54 <p>В new HashSet string добавление (add), поиск (search), а также удаление (remove) элементов происходит за постоянное время. Количество of the element в коллекции не имеет никакого значения.</p>
55 <p>Такой метод организации позволяет хранить компоненты в произвольном порядке. Он быстро справляется с поиском. Использовать такой set interface необходимо тогда, когда порядок не имеет никакого значения, а на первое место выходит скорость. Для оптимизации поиска метод (method) HashSet хранит компоненты так, как ему удобно.</p>
55 <p>Такой метод организации позволяет хранить компоненты в произвольном порядке. Он быстро справляется с поиском. Использовать такой set interface необходимо тогда, когда порядок не имеет никакого значения, а на первое место выходит скорость. Для оптимизации поиска метод (method) HashSet хранит компоненты так, как ему удобно.</p>
56 <h3>LikesHashSet и TreeSet</h3>
56 <h3>LikesHashSet и TreeSet</h3>
57 <p>Второй вариант set interface - это LikesHashSet. Данный метод позволяет организовать хранение так, как изначально был добавлен элемент в множество. Он работает чуть медленнее, чем HashSet, зато является более систематизированным.</p>
57 <p>Второй вариант set interface - это LikesHashSet. Данный метод позволяет организовать хранение так, как изначально был добавлен элемент в множество. Он работает чуть медленнее, чем HashSet, зато является более систематизированным.</p>
58 <p>TreeSet встречается реже. Он позволяет хранить компоненты в отсортированном виде. Способ "классификации" (то, в какой форме получать и сохранять данные) разработчик определяет самостоятельно. По умолчанию при использовании The TreeSet применяется организация в естественном порядке - в форме красно-черного дерева.</p>
58 <p>TreeSet встречается реже. Он позволяет хранить компоненты в отсортированном виде. Способ "классификации" (то, в какой форме получать и сохранять данные) разработчик определяет самостоятельно. По умолчанию при использовании The TreeSet применяется организация в естественном порядке - в форме красно-черного дерева.</p>
59 <h2>Сравнение Set со списками</h2>
59 <h2>Сравнение Set со списками</h2>
60 <p>Set Interface и List похожи друг на друга. Соответствующие коллекции выступают в качестве некоторого набора компонентов. Они отличаются друг от друга. Ключевая разница - методы (the methods), которые содержат the Set и the List in the programming languages:</p>
60 <p>Set Interface и List похожи друг на друга. Соответствующие коллекции выступают в качестве некоторого набора компонентов. Они отличаются друг от друга. Ключевая разница - методы (the methods), которые содержат the Set и the List in the programming languages:</p>
61 <ol><li>В Set e новые (new) элементы не могут быть добавлены, если они уже имеются в пределах заданного множества. В списках соответствующий принцип не работает. В таких коллекциях int (integer), str (strings) и void могут встречаться более одного раза.</li>
61 <ol><li>В Set e новые (new) элементы не могут быть добавлены, если они уже имеются в пределах заданного множества. В списках соответствующий принцип не работает. В таких коллекциях int (integer), str (strings) и void могут встречаться более одного раза.</li>
62 <li>Второй момент, на который необходимо обратить внимание - это гарантированность внутреннего порядка. Получить 100% упорядоченный "перечень" позволяет только список. Компоненты в List могут повторяться согласно установленному внутреннему порядку.</li>
62 <li>Второй момент, на который необходимо обратить внимание - это гарантированность внутреннего порядка. Получить 100% упорядоченный "перечень" позволяет только список. Компоненты в List могут повторяться согласно установленному внутреннему порядку.</li>
63 </ol><p>В остальном the List и the Set похожи друг на друга.</p>
63 </ol><p>В остальном the List и the Set похожи друг на друга.</p>
64 <h2>Реализации</h2>
64 <h2>Реализации</h2>
65 <p>The Set - это интерфейс. Для использования соответствующего компонента потребуется выбрать реализацию:</p>
65 <p>The Set - это интерфейс. Для использования соответствующего компонента потребуется выбрать реализацию:</p>
66 <ul><li>java.util.enumset;</li>
66 <ul><li>java.util.enumset;</li>
67 <li>java util set (hashset);</li>
67 <li>java util set (hashset);</li>
68 <li>jawakutilklaidakes ashset;</li>
68 <li>jawakutilklaidakes ashset;</li>
69 <li>util.treeset.</li>
69 <li>util.treeset.</li>
70 </ul><p>Каждая предложенная реализация Set ведет себя по-разному относительно порядка расположения элементов при итерации набора и времени, необходимого для вставки и доступа к компонентам в наборах.</p>
70 </ul><p>Каждая предложенная реализация Set ведет себя по-разному относительно порядка расположения элементов при итерации набора и времени, необходимого для вставки и доступа к компонентам в наборах.</p>
71 <p>HashSet поддерживается HashMap. Он не поддерживает никаких гарантий относительно последовательностей элементов в процессе итерации (iterator string).</p>
71 <p>HashSet поддерживается HashMap. Он не поддерживает никаких гарантий относительно последовательностей элементов в процессе итерации (iterator string).</p>
72 <p>LinkedHashSet в отличие от HashSet one отличается тем, что он гарантирует сохранение порядка элементов во время итерации. Он будет совпадать с их вставкой в коллекции. При повторной вставке элемента, который уже имеется в LinkedHashSet порядок не поменяется.</p>
72 <p>LinkedHashSet в отличие от HashSet one отличается тем, что он гарантирует сохранение порядка элементов во время итерации. Он будет совпадать с их вставкой в коллекции. При повторной вставке элемента, который уже имеется в LinkedHashSet порядок не поменяется.</p>
73 <p>Tree Set int Java тоже гарантирует получение массива в определенном порядке при повторении. Таковым является порядок сортировки. Речь идет о порядке, в котором компоненты должны быть отсортированы при использовании Collections.sort для List или массива, содержащего соответствующие элементы. Порядок будет определяться либо естественным расположением (при реализации Comparable), либо конкретной реализацией Comparator.</p>
73 <p>Tree Set int Java тоже гарантирует получение массива в определенном порядке при повторении. Таковым является порядок сортировки. Речь идет о порядке, в котором компоненты должны быть отсортированы при использовании Collections.sort для List или массива, содержащего соответствующие элементы. Порядок будет определяться либо естественным расположением (при реализации Comparable), либо конкретной реализацией Comparator.</p>
74 <h2>Методы и примеры</h2>
74 <h2>Методы и примеры</h2>
75 - <p>Далее будут рассмотрен ключевые методы в set string java. К ним относят:</p>
75 + <p>Далее будут рассмотрены ключевые методы в set string java. К ним относят:</p>
76 <ul><li>add - добавление компонента;</li>
76 <ul><li>add - добавление компонента;</li>
77 <li>remove - удаление;</li>
77 <li>remove - удаление;</li>
78 <li>size - возврат размера множества;</li>
78 <li>size - возврат размера множества;</li>
79 <li>contains - определение факта нахождения составляющего в множестве;</li>
79 <li>contains - определение факта нахождения составляющего в множестве;</li>
80 <li>clear - удаление всех компонентов из коллекции;</li>
80 <li>clear - удаление всех компонентов из коллекции;</li>
81 <li>isEmpty - возвращает значение true, если множество пустое.</li>
81 <li>isEmpty - возвращает значение true, если множество пустое.</li>
82 </ul><p>Ниже представлены коды, которые помогут совершать различные операции в пределах коллекции.</p>
82 </ul><p>Ниже представлены коды, которые помогут совершать различные операции в пределах коллекции.</p>
83 <h3>Добавление в набор</h3>
83 <h3>Добавление в набор</h3>
84 <p>The set поддерживает метод add. С его помощью удается добавлять новые составляющие во множество. Он унаследован непосредственно от интерфейса Collection:</p>
84 <p>The set поддерживает метод add. С его помощью удается добавлять новые составляющие во множество. Он унаследован непосредственно от интерфейса Collection:</p>
85 <p>Выше - три вызова упомянутого метода. Они добавляют экземпляр к String-набору.</p>
85 <p>Выше - три вызова упомянутого метода. Они добавляют экземпляр к String-набору.</p>
86 <h3>Перебор</h3>
86 <h3>Перебор</h3>
87 <p>Перебор составляющих в the set может осуществляться несколькими способами:</p>
87 <p>Перебор составляющих в the set может осуществляться несколькими способами:</p>
88 <ul><li>через цикл for-each;</li>
88 <ul><li>через цикл for-each;</li>
89 <li>при помощи итератора, который будет получен непосредственно из the set.</li>
89 <li>при помощи итератора, который будет получен непосредственно из the set.</li>
90 </ul><p>При обработки итерации компонентов в the Set порядок составляющих зависит от того, какая именно реализация была использована.</p>
90 </ul><p>При обработки итерации компонентов в the Set порядок составляющих зависит от того, какая именно реализация была использована.</p>
91 <h4><em>Через итератор</em></h4>
91 <h4><em>Через итератор</em></h4>
92 <p>Для выполнения итерации компонентов через итератор, потребуется сначала получить его из имеющегося набора. Для этого применяется метод iterator:</p>
92 <p>Для выполнения итерации компонентов через итератор, потребуется сначала получить его из имеющегося набора. Для этого применяется метод iterator:</p>
93 <p>Выше - наглядный пример кода, который поможет добиться желаемого результата.</p>
93 <p>Выше - наглядный пример кода, который поможет добиться желаемого результата.</p>
94 <h4><em>Использование цикла</em></h4>
94 <h4><em>Использование цикла</em></h4>
95 <p>Перебор может быть реализован через цикл for-each:</p>
95 <p>Перебор может быть реализован через цикл for-each:</p>
96 <p>Set Interface будет реализовывать Iterable. Из-за этого можно перебирать компоненты набора через for-each.</p>
96 <p>Set Interface будет реализовывать Iterable. Из-за этого можно перебирать компоненты набора через for-each.</p>
97 <h3>Установка размера через Size</h3>
97 <h3>Установка размера через Size</h3>
98 <p>Метод size используется для того, чтобы разработчик смог установить размер набора. В качестве соответствующего параметра выступает количество компонентов, включенных во множество:</p>
98 <p>Метод size используется для того, чтобы разработчик смог установить размер набора. В качестве соответствующего параметра выступает количество компонентов, включенных во множество:</p>
99 <p>После обработки соответствующего запроса переменная, отвечающая за размер, будет иметь значение, равное 3. Результатом обработки фрагмента кода является массив с тремя добавленными компонентами.</p>
99 <p>После обработки соответствующего запроса переменная, отвечающая за размер, будет иметь значение, равное 3. Результатом обработки фрагмента кода является массив с тремя добавленными компонентами.</p>
100 <h3>Проверка на пустоту</h3>
100 <h3>Проверка на пустоту</h3>
101 <p>Чтобы проверить множество на пустоту, достаточно использовать метод isEmpty:</p>
101 <p>Чтобы проверить множество на пустоту, достаточно использовать метод isEmpty:</p>
102 <p>После его реализации переменная isEmpty получит значение, равное "Истина". Связано это с тем, что новый the Set является пустым: в нем отсутствуют составляющие.</p>
102 <p>После его реализации переменная isEmpty получит значение, равное "Истина". Связано это с тем, что новый the Set является пустым: в нем отсутствуют составляющие.</p>
103 <p>Еще один вариант проверки на пустоту:</p>
103 <p>Еще один вариант проверки на пустоту:</p>
104 <p>Для реализации команды используется сравнение значения, возвращаемого методом size() с нулем. Как только код обработается, переменная isEmpty получит значение true. Это связано с тем, что метод set size возвращает 0.</p>
104 <p>Для реализации команды используется сравнение значения, возвращаемого методом size() с нулем. Как только код обработается, переменная isEmpty получит значение true. Это связано с тем, что метод set size возвращает 0.</p>
105 <h3>Содержание компонента</h3>
105 <h3>Содержание компонента</h3>
106 <p>А вот фрагмент кода, который помогает выяснить, содержится ли заданное значение (объект) во множестве:</p>
106 <p>А вот фрагмент кода, который помогает выяснить, содержится ли заданное значение (объект) во множестве:</p>
107 - <p>Для определения набора на факт содержания того или иного объекта требуется внутреннее выполнение итерации компонентов множества с каждым элементов, передаваемым в качестве параметра. Сравнение реализовывается при помощи метода равенства.</p>
107 + <p>Для оределения набора на факт содержания того или иного объекта требуется внутреннее выполнение итерации компонентов множества с каждым элементов, передаваемым в качестве параметра. Сравнение реализовывается при помощи метода равенства.</p>
108 <p><a>Интересует Java? Добро пожаловать на курс в Otus</a>!</p>
108 <p><a>Интересует Java? Добро пожаловать на курс в Otus</a>!</p>
109  
109