Конструктор identity
Конструктор identity класса Set создает
новое множество, в котором элементы сравниваются
по идентичности (ссылке на объект), а не по значению.
Это означает, что два объекта с одинаковым содержимым,
но разными ссылками, будут считаться разными элементами.
Конструктор не принимает параметров.
Синтаксис
Set.identity()
Пример
Давайте создадим множество с идентичностью и добавим в него две разные строки с одинаковым содержимым:
void main()
{
Set<String> set = Set.identity();
String a = 'abcde';
String b = 'abcde';
set.add(a);
set.add(b);
print(set.length);
}
Результат выполнения кода:
2
Пример
Давайте сравним поведение обычного множества и множества с идентичностью при добавлении одинаковых по значению элементов:
void main()
{
Set<String> regular = {};
Set<String> identity = Set.identity();
regular.add('abcde');
regular.add('abcde');
identity.add('abcde');
identity.add('abcde');
print(regular.length);
print(identity.length);
}
Результат выполнения кода:
1
2
Пример
Давайте создадим множество с идентичностью, добавим в него элементы и проверим их наличие:
void main()
{
Set<int> set = Set.identity();
set.add(1);
set.add(2);
set.add(3);
print(set.contains(1));
print(set.contains(4));
}
Результат выполнения кода:
true
false