Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ συλλογών και πινάκων;

sobes.tech AI

Απάντηση από AI

Στη Swift, δεν υπάρχει ξεχωριστός τύπος "συλλογής". Υπάρχει το πρωτόκολλο Collection, στο οποίο αντιστοιχούν διάφοροι τύποι, συμπεριλαμβανομένων των Array, Set και Dictionary.

Οι βασικές διαφορές μεταξύ Array και άλλων τύπων που συμμορφώνονται με το πρωτόκολλο Collection:

  1. Σειρά στοιχείων:

    • Array: Ταξινομημένη συλλογή. Τα στοιχεία αποθηκεύονται σε μια ορισμένη σειρά και προσπελάζονται μέσω δείκτη.
    • Set: Μη ταξινομημένη συλλογή μοναδικών στοιχείων.
    • Dictionary: Μη ταξινομημένη συλλογή ζευγών "κλειδί-τιμή".
  2. Πρόσβαση μέσω δείκτη:

    • Array: Υποστηρίζει πρόσβαση στα στοιχεία μέσω ακέραιου δείκτη.
    • Set: Δεν υποστηρίζει άμεση πρόσβαση μέσω δείκτη.
    • Dictionary: Η πρόσβαση στις τιμές γίνεται μέσω του κλειδιού.
  3. Μοναδικότητα στοιχείων:

    • Array: Μπορεί να περιέχει διπλότυπα στοιχεία.
    • Set: Περιέχει μόνο μοναδικά στοιχεία.
    • Dictionary: Τα κλειδιά πρέπει να είναι μοναδικά, οι τιμές μπορούν να επαναλαμβάνονται.
  4. Απόδοση:

    • Η πρόσβαση μέσω δείκτη σε Array είναι συνήθως πιο γρήγορη (O(1) κατά μέσο όρο).
    • Η αναζήτηση ενός στοιχείου σε Set ή μέσω κλειδιού σε Dictionary είναι συνήθως πιο γρήγορη (O(1) κατά μέσο όρο) σε σύγκριση με την αναζήτηση σε Array (O(n)).

Παράδειγμα χρήσης του Array:

// Δημιουργία πίνακα συμβολοσειρών
var names: [String] = ["Alice", "Bob", "Charlie"]

// Πρόσβαση σε στοιχείο μέσω δείκτη
let firstPerson = names[0] // "Alice"

// Προσθήκη στοιχείου
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

Παράδειγμα χρήσης του Set:

// Δημιουργία συνόλου ακέραιων
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - διπλότυπο αφαιρέθηκε

// Έλεγχος αν περιέχει ένα στοιχείο
let containsThree = uniqueNumbers.contains(3) // true

Παράδειγμα χρήσης του Dictionary:

// Δημιουργία λεξικού "όνομα - ηλικία"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]

// Πρόσβαση σε τιμή μέσω κλειδιού
let aliceAge = ages["Alice"] // 30

// Προσθήκη νέου ζεύγους
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]