Урок 10. Множества

9 января 2023

Множество – Это коллекция, все элементы которой являются уникальными, то есть не повторяются,  и хранятся в хаотичном порядке. Множества обозначаются как Set

Давайте снова обратимся к примеру:

				
					let colors: Set = ["Красный", "Желтый", "Зеленый"]
				
			

Множество выглядит как массив, единственное что бы это подчеркнуть, необходимо прописать тип явно, если этого не сделать то свойство будет массивом. 

Зачем же нам нужно множество, если есть уже массивы?! 

На самом деле это очень хорошая коллекция для определения все ли элементы в массиве уникальные, и мы обязательно на такой пример посмотрим, но в следующих уроках, пока вам не хватает знаний для обсуждения данного вопроса. 

У множеств есть некоторые преимущества по сравнению с массивами:

1. Множества хранят только уникальные элементы, поэтому вы легко сможете проверить содержит ли множество, какой-либо элемент, использовав метод contains. Что бы проверить массив, нужен такой же метод, но компилятор будет перебирать каждый элемент последовательно что бы найти первый соотвествующий, отсюда вытекает второе преимущество. 

2. Множества работают быстрее, так как компилятору не приходится последовательно перебирать каждый элемент, и переиндексировать их в случае удаления, либо добавления элемента.

Появляется резонный вопрос, зачем тогда массивы, если у нас есть множества?! 

В некоторых случаях нам необходима упорядоченность элементов, поэтому здесь все будет зависеть от ваших целей. Не бывает что-то не нужным, бывает просто не подходящий момент для той или иной концепции. 

Что бы создать пустое множество, нужно прописать не только Set, но и тип данных:

				
					var colors: Set<String> = []
var countLeg = Set<String>()
				
			

это два рабочих варианта, выбирайте любой удобный для вас. 

Методы Множества

В целом здесь точно такие же свойства и методы, что и у массивов и у словарей, так как это тоже коллекция, но есть и специфичные. Давайте пройдемся по уже знакомым нам:

count – возвращает количество элементов в множестве

first – возвращает первый элемент множества

is Empty – возвращает true, если множество пустое, иначе false

contains(_:) – возвращает ture, если множество содержит заданный элемент, иначе false

insert(_:) – добавляет новый элемент в множество. Давайте посмотрим на примере:

Обратите внимание на тип параметра, это String, потому что мы вызываем метод у множества с типом String, если бы это было множество с типом Int, то и параметр был бы такого типа:

Ну и давайте добавим по элементу в каждое из множеств:

				
					var colors: Set = ["Красный", "Желтый", "Зеленый"]
colors.insert("Белый")

var countLag: Set = [4, 6, 8]
countLag.insert(2)

colors
countLag
				
			

в строке с добавлением справа, вы можете видеть два параметра inserted равное true, оно говорит о том что элемент был добавлен, и memberAfterInsert, но показывает добавленный элемент. 

Но что будет если мы попытаемся добавить уже имеющийся во множестве элемент:

Как видите параметр inserted вернул false, то есть элемент не был добавлен. 

Но что будет если мы определим повторяющийся элемент непосредственно в само множество:

Компилятор это значение просто не учитывает. 

И последний метод который мы рассмотрим в данном уроке это

remove(_:) – удаляет элемент из множества

При каждом запуске компилятора, расстановка элементов может изменяться, так как множество это не упорядоченная коллекция.

Как вы видите мы удалили желтый цвет и цифру 6 из наших коллекций. 

Давайте подведем итог. 

Множество это не упорядоченная коллекция (элементы располагаются хаотично), все элементы уникальные, то есть не повторятся. 

Поддержите наш проект, и помогите изменить подход к обучению!

Развивайся вместе с нами

Поддержите наш проект, и помогите изменить подход к обучению!

Address List

Social Networks

Поддержите наш проект, и помогите изменить подход к обучению!