Sobes.tech
Junior — Middle

Welke datatypes of objecten kunnen dienen als sleutels in woordenboeken of hashtabellen?

sobes.tech AI

Antwoord van AI

In woordenboeken (dictionary) of hash-tabellen kunnen de sleutels objecten zijn die aan de volgende eisen voldoen:

  • Correct geïmplementeerde gelijkheidsvergelijkingsmethoden (equals in Java, isEqual in Swift) en hashcode-berekeningen (hashCode in Java).
  • Ze zijn onveranderlijk (immutable) of veranderen op zijn minst niet nadat ze als sleutel zijn gebruikt, om zoekproblemen te voorkomen.

In iOS (Swift) worden in woordenboeken (Dictionary) meestal typen gebruikt die voldoen aan het protocol Hashable. Dit kunnen zijn:

  • Standaardtypen: String, Int, Double, Bool.
  • Aangepaste structuren of klassen die het Hashable-protocol implementeren.

Voorbeeld:

struct Person: Hashable {
    let id: Int
    let name: String
}

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

Dus moeten de sleutels hashbaar en onveranderlijk zijn voor de correcte werking van de woordenboek.