Sobes.tech
Junior — Middle

Объекттин Set коллекциясына туура кошулушу үчүн негизги критерийлер кандай?

sobes.tech AI

AIден жооп

Туура түрдө объектти Set топтомуна кошуу үчүн (мисалы, iOSтогу NSSet) объект төмөнкүлөргө тийиш:

  • -hash жана -isEqual: методдорун туура жана туруктуу ишке ашыруу керек.

    • -hash бирдей деп эсептелген объекттер үчүн бирдей маанини кайтаруусу керек.
    • -isEqual: объекттердин барабарлыгын так аныктоо керек.
  • Объект Set ичинде турганда, хешти жана салыштыруу үчүн катышкан талааларда өзгөрбөшү керек. Болбосо, коллекциянын бүтүндүгү бузулат.

Мисалы, эгер сиз NSSet үчүн сактоо үчүн өз классыңызды түзсөңүз, бул методдорду кайра жазыңыз:

- (NSUInteger)hash {
    return self.identifier.hash;
}

- (BOOL)isEqual:(id)object {
    if (self == object) return YES;
    if (![object isKindOfClass:[MyClass class]]) return NO;
    return [self.identifier isEqual:((MyClass *)object).identifier];
}

Бул Set объекттердин уникалдуулугун туура аныктоосун камсыздайт.