Sobes.tech
Junior — Middle

Jak zaimplementować przechowywanie elementów w zbiorze z obsługą kolejności ich występowania?

sobes.tech AI

Odpowiedź od AI

Aby przechowywać elementy w zbiorze z zachowaniem kolejności ich dodawania w iOS (Swift), można użyć struktury danych łączącej właściwości zbioru i tablicy. W standardowej bibliotece Swift dostępny jest typ OrderedSet, od iOS 13 i macOS 10.15, który dokładnie to robi — przechowuje unikalne elementy i zachowuje ich kolejność.

Przykład użycia OrderedSet:

import Foundation

var orderedSet = OrderedSet<String>()
orderedSet.append("apple")
orderedSet.append("banana")
orderedSet.append("apple") // nie zostanie dodany, ponieważ element już istnieje

print(orderedSet) // ["apple", "banana"]

Jeśli OrderedSet nie jest dostępny, można zaimplementować podobne zachowanie, używając tablicy do przechowywania kolejności i zbioru do sprawdzania unikalności:

var array: [String] = []
var set: Set<String> = []

func addElement(_ element: String) {
    if !set.contains(element) {
        set.insert(element)
        array.append(element)
    }
}

addElement("apple")
addElement("banana")
addElement("apple")

print(array) // ["apple", "banana"]

W ten sposób zachowujesz kolejność dodawania i unikalność elementów.