web-dev-qa-db-fra.com

Différence entre Array, Set et Dictionary dans Swift

Je suis nouveau sur Swift Lang, j'ai vu beaucoup de tutoriels, mais ce n'est pas clair - ma question est quelle est la principale différence entre les Array, Set et Dictionary type de collection?

17
Magesh Pandian

Voici les différences pratiques entre les différents types:

Les tableaux sont effectivement des listes ordonnées et sont utilisés pour stocker des listes d'informations dans les cas où l'ordre est important.

Par exemple, les publications d'une application de réseau social affichées dans une tableView peuvent être stockées dans un tableau.

Les ensembles sont différents dans le sens où l'ordre n'a pas d'importance et ceux-ci seront utilisés dans les cas où l'ordre n'a pas d'importance.

Les ensembles sont particulièrement utiles lorsque vous devez vous assurer qu'un élément n'apparaît que une fois dans l'ensemble.

Les dictionnaires sont utilisés pour stocker les paires clé, valeur et sont utilisés lorsque vous voulez trouver facilement une valeur à l'aide d'une clé, comme dans un dictionnaire.

Par exemple, vous pouvez stocker une liste d'éléments et des liens vers plus d'informations sur ces éléments dans un dictionnaire.

J'espère que cela t'aides :)

(Pour plus d'informations et pour trouver les propres définitions d'Apple, consultez les guides d'Apple sur https://developer.Apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html )

28
GJZ

Une documentation détaillée peut être trouvée ici sur Guide d'Apple . Voici quelques définitions rapides extraites de là:

Array

Un tableau stocke des valeurs du même type dans une liste ordonnée. La même valeur peut apparaître plusieurs fois dans un tableau à différentes positions.

Ensemble

Un ensemble stocke des valeurs distinctes du même type dans une collection sans ordre défini. Vous pouvez utiliser un ensemble au lieu d'un tableau lorsque l'ordre des éléments n'est pas important ou lorsque vous devez vous assurer qu'un élément n'apparaît qu'une seule fois.

Dictionnaire

Un dictionnaire stocke les associations entre les clés du même type et les valeurs du même type dans une collection sans ordre défini. Chaque valeur est associée à une clé unique, qui agit comme identifiant pour cette valeur dans le dictionnaire. Contrairement aux éléments d'un tableau, les éléments d'un dictionnaire n'ont pas d'ordre spécifié. Vous utilisez un dictionnaire lorsque vous devez rechercher des valeurs en fonction de leur identifiant, de la même manière qu'un dictionnaire réel est utilisé pour rechercher la définition d'un mot particulier.

9
Munahil

Vieux fil qui mérite pourtant de parler de performances.

Avec un élément N donné à l'intérieur d'un tableau ou d'un dictionnaire, il convient de considérer les performances lorsque vous essayez d'accéder à des éléments ou d'ajouter ou de supprimer des objets.

Tableaux

Pour accès un élément aléatoire vous coûtera la même chose que d'accéder au premier ou au dernier, car les éléments se suivent de manière séquentielle pour qu'ils soient accessibles directement. Ils vous coûteront 1 cycle.

Insertion un élément est coûteux. Si vous ajoutez au début, cela vous coûtera 1 cycle. En insérant au milieu, le reste doit être déplacé. Cela peut vous coûter jusqu'à N cycle dans le pire des cas (N/2 cycles moyens). Si vous ajoutez à la fin et que vous avez assez de place dans le tableau, cela vous coûtera 1 cycle. Sinon, tout le tableau sera copié, ce qui vous coûtera N cycle. C'est pourquoi il est important d'attribuer suffisamment d'espace au tableau au début de l'opération .

Suppression du début ou de la fin cela vous coûtera 1. De l'opération de décalage du milieu est nécessaire. En moyenne, c'est N/2.

Trouver élément avec une propriété donnée vous coûtera N/2 cycle.

Soyez donc très prudent avec les énormes tableaux.

Dictionnaires

Bien que les dictionnaires soient désordonnés, ils peuvent vous apporter certains avantages ici. Comme les clés sont hachées et stockées dans une table de hachage, toute opération donnée vous coûtera 1 cycle. Seule exception peut être recherche un élément avec une propriété donnée. Cela peut vous coûter N/2 cycle dans le pire des cas. Avec une conception intelligente, vous pouvez toutefois attribuer des valeurs de propriété en tant que clés de dictionnaire afin que la recherche ne vous coûte qu'un cycle, quel que soit le nombre d'éléments à l'intérieur.

5
Teddy