0Pricing
Swift Academy · Lekcja

Wybór między Array, Dictionary i Set

Poznać charakterystykę wydajności i dobrać właściwy typ kolekcji do każdego scenariusza

Wybór między Array, Dictionary i Set to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Witamy

Trzy wbudowane kolekcje języka Swift — Array, Dictionary i Set — mają różne zalety. Wybór odpowiedniej z nich wpływa zarówno na poprawność, jak i wydajność programu.

Array: uporządkowane sekwencje

Należy użyć `Array`, gdy: • kolejność ma znaczenie • potrzebny jest losowy dostęp za pomocą indeksu `O(1)` • duplikaty są dozwolone • elementy są przetwarzane sekwencyjnie ```swift let steps = ["boil","add tea","steep","drink"] ```

Dictionary: wyszukiwanie klucz-wartość

Należy użyć `Dictionary`, gdy: • potrzebne jest wyszukiwanie w czasie O(1) za pomocą unikatowego klucza • dane mają naturalnie przypisane klucze, na przykład identyfikator użytkownika lub klucz konfiguracji ```swift var userNames: [Int: String] = [42: "Alice", 7: "Bob"] print(userNames[42]!) // "Alice" ```

Set: unikatowa przynależność

Należy użyć `Set`, gdy: • potrzebne jest sprawdzanie przynależności w czasie O(1) • duplikaty muszą być wykluczone • kolejność nie ma znaczenia ```swift var visitedPages: Set = [] visitedPages.insert("/home") print(visitedPages.contains("/home")) // true ```

Podsumowanie wydajności

| Operation | Array | Dictionary | Set | |-------------------|-------|------------|-------| | Append | O(1)* | O(1)* | O(1)* | | Index/Key access | O(1) | O(1)* | — | | Search | O(n) | O(1)* | O(1)* | | Insert middle | O(n) | O(1)* | O(1)* | *amortised average

Kiedy Array przewyższa Set

Małe kolekcje często korzystają bardziej z `Array` niż z `Set` ze względu na mniejszy narzut: ```swift // For 5 items, Array.contains is perfectly fast: let tags = ["swift","ios","mobile"] if tags.contains("swift") { ... } ``` Stały narzut związany z haszowaniem może dominować w przypadku bardzo małych zbiorów.

Wzorzec uporządkowanego słownika

Gdy potrzebne jest zarówno wyszukiwanie po kluczu, jak i zachowanie kolejności wstawiania: ```swift // Use an array of tuples or a struct: var ordered: [(key: String, value: Int)] = [] // Or Foundation's NSOrderedDictionary // Or maintain a [Key] array alongside a [Key:Value] dict ```

Wzorzec multizbioru

W przypadku zliczanych duplikatów (multizbioru) należy użyć `[T: Int]`: ```swift var frequency: [String: Int] = [:] for word in words { frequency[word, default: 0] += 1 } ```

Niemutowalność: let a var

Wszystkie trzy kolekcje korzystają z użycia `let` w celu zapewnienia niemutowalności: ```swift let config: [String: String] = ["env": "prod"] let primes: Set = [2,3,5,7,11] let steps: [String] = ["fetch","parse","display"] ``` Niemutowalne kolekcje zapobiegają przypadkowym modyfikacjom i umożliwiają kompilatorowi optymalizację kodu.

Praktyczne drzewo decyzyjne

Należy zadać sobie następujące pytania: 1. Czy potrzebuję uporządkowanego dostępu według pozycji? → Array 2. Czy potrzebuję wyszukiwania za pomocą unikatowego klucza? → Dictionary 3. Czy potrzebuję szybkiego sprawdzania przynależności bez duplikatów? → Set 4. Połączenie wymagań? → Należy połączyć kolekcje, na przykład użyć `[Key: [Value]]` dla pogrupowanych danych

Szybkie sprawdzenie

Która kolekcja zapewnia średnio wyszukiwanie w czasie O(1) za pomocą unikatowego klucza?

Podsumowanie

Najważniejsze informacje: • Array — uporządkowana, indeksowana, pozwala na duplikaty • Dictionary — pary klucz-wartość, wyszukiwanie w czasie O(1) • Set — unikatowe wartości, sprawdzanie przynależności w czasie O(1) • Małe kolekcje: Array często przewyższa Set ze względu na narzut haszowania • Kolekcje można łączyć, aby modelować złożone struktury danych Kurs ukończony! Dalej: wzorce projektowania struktur.

Często zadawane pytania

Czy lekcja „Wybór między Array, Dictionary i Set” jest bezpłatna?

Tak — pełny tekst „Wybór między Array, Dictionary i Set” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wybór między Array, Dictionary i Set”?

Poznać charakterystykę wydajności i dobrać właściwy typ kolekcji do każdego scenariusza Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Wybór między Array, Dictionary i Set”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Operacje CRUD na słowniku i dostęp przez subscript
  2. Iterowanie po słownikach i ich przekształcanie
  3. Operacje na zbiorach: suma, przecięcie i różnica
  4. Wybór między Array, Dictionary i Set
← Powrót do Swift Academy