Junior
Jaka jest różnica między kolekcjami a tablicami?
sobes.tech AI
Odpowiedź od AI
W Swift nie ma oddzielnego typu "kolekcji". Istnieje protokół Collection, do którego należą różne typy, w tym Array, Set i Dictionary.
Główne różnice między Array a innymi typami spełniającymi protokół Collection:
-
Kolejność elementów:
Array: Kolekcja uporządkowana. Elementy są przechowywane w określonym porządku i dostępne przez indeks.Set: Nieuporządkowana kolekcja unikalnych elementów.Dictionary: Nieuporządkowana kolekcja par "klucz-wartość".
-
Dostęp przez indeks:
Array: Obsługuje dostęp do elementów przez indeks całkowity.Set: Nie obsługuje bezpośredniego dostępu przez indeks.Dictionary: Dostęp do wartości odbywa się przez klucz.
-
Unikalność elementów:
Array: Może zawierać duplikaty.Set: Zawiera tylko unikalne elementy.Dictionary: Klucze muszą być unikalne, wartości mogą się powtarzać.
-
Wydajność:
- Dostęp przez indeks w
Arrayjest zwykle szybszy (średnio O(1)). - Wyszukiwanie elementu w
Setlub po kluczu wDictionaryjest zwykle szybsze (średnio O(1)) w porównaniu do wyszukiwania wArray(O(n)).
- Dostęp przez indeks w
Przykład użycia Array:
// Tworzenie tablicy stringów
var names: [String] = ["Alice", "Bob", "Charlie"]
// Dostęp do elementu przez indeks
let firstPerson = names[0] // "Alice"
// Dodanie elementu
names.append("David") // ["Alice", "Bob", "Charlie", "David"]
Przykład użycia Set:
// Tworzenie zbioru liczb całkowitych
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - duplikat usunięty
// Sprawdzenie, czy zawiera element
let containsThree = uniqueNumbers.contains(3) // true
Przykład użycia Dictionary:
// Tworzenie słownika "imię - wiek"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]
// Dostęp do wartości przez klucz
let aliceAge = ages["Alice"] // 30
// Dodanie nowej pary
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]