Sobes.tech
Junior

Mi a különbség a gyűjtemények és a tömbök között?

sobes.tech MI

Válasz az MI-től

Swiftben nincs külön "gyűjtemény" típus. Létezik a Collection protokoll, amelyhez különböző típusok tartoznak, beleértve az Array, Set és Dictionary típusokat.

Az Array és más, a Collection protokollt megvalósító típusok közötti fő különbségek:

  1. Elemek sorrendje:

    • Array: Rendezett gyűjtemény. Az elemek meghatározott sorrendben vannak tárolva, és index segítségével érhetők el.
    • Set: Rendezhetetlen, egyedi elemek gyűjteménye.
    • Dictionary: Rendezhetetlen, "kulcs-érték" párok gyűjteménye.
  2. Hozzáférés index szerint:

    • Array: Támogatja az elemekhez való hozzáférést egész számú index segítségével.
    • Set: Nem támogatja az egyenes index szerinti hozzáférést.
    • Dictionary: A értékekhez a kulcs segítségével férhetünk hozzá.
  3. Az elemek egyedisége:

    • Array: Tartalmazhat duplikált elemeket.
    • Set: Csak egyedi elemeket tartalmaz.
    • Dictionary: A kulcsoknak egyedinek kell lenniük, a értékek ismétlődhetnek.
  4. Teljesítmény:

    • Az index szerinti hozzáférés az Array-ben általában gyorsabb (átlagosan O(1)).
    • Az elem keresése Set-ben vagy a kulcs szerinti keresés Dictionary-ben általában gyorsabb (átlagosan O(1)), mint az Array-ben (O(n)).

Példa az Array használatára:

// Stringekből álló tömb létrehozása
var names: [String] = ["Alice", "Bob", "Charlie"]

// Elem elérése index segítségével
let firstPerson = names[0] // "Alice"

// Elem hozzáadása
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

Példa a Set használatára:

// Egész számokból álló halmaz létrehozása
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - duplikátum eltávolítva

// Elem létezésének ellenőrzése
let containsThree = uniqueNumbers.contains(3) // true

Példa a Dictionary használatára:

// "név - életkor" szótár létrehozása
var ages: [String: Int] = ["Alice": 30, "Bob": 25]

// Érték elérése kulcs segítségével
let aliceAge = ages["Alice"] // 30

// Új pár hozzáadása
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]