Sobes.tech
Back to questions
Junior — Middle
130

Какие способы позволяют обеспечить уникальность элементов при использовании структуры данных set?

Companies where asked
Grotem

Answer from AI

sobes.tech AI

В Flutter (Dart) для обеспечения уникальности элементов в структуре данных Set используются следующие способы:

  • Использование встроенного типа Set, который по умолчанию хранит уникальные элементы. При добавлении элемента проверяется его равенство с уже существующими.
  • Переопределение методов == и hashCode в пользовательских классах. Это необходимо, чтобы Set мог корректно сравнивать объекты и определять их уникальность.

Пример:

class Person {
  final String name;
  final int id;

  Person(this.name, this.id);

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Person && runtimeType == other.runtimeType && id == other.id;

  @override
  int get hashCode => id.hashCode;
}

void main() {
  var people = <Person>{};
  people.add(Person('Alice', 1));
  people.add(Person('Bob', 2));
  people.add(Person('Alice', 1)); // не добавится, так как id совпадает

  print(people.length); // 2
}

Таким образом, уникальность обеспечивается корректной реализацией сравнения и хэширования объектов.