Une erreur commune faite par les nouveaux programmeurs consiste à stocker toutes les collections de données dans des tableaux simples. Bien que l'ensemble de base est une structure grande de données , il a un certain nombre de faiblesses qui peuvent être évités en utilisant d'autres structures de données de base . Le Cadre collections Java fournit un ensemble de fonctions faciles à utiliser, les interfaces et les classes qui implémentent certaines des structures de données les plus courantes dans l'informatique. Tableau de base
La meilleure chose à propos d'un tableau de base en Java est qu'il peut lire et écrit rapidement . Toutefois, l'ajout ou la suppression d'un élément du tableau de façon permanente nécessite beaucoup de temps, parce que Java ne supporte pas les tableaux dynamiques . Chaque fois que vous redimensionnez un tableau en Java , vous devez reconstruire la matrice à partir de zéro , un élément à la fois, avec une boucle. Vous pouvez éviter cela en initialisant toujours vos tableaux à la taille maximale requise à tout moment pendant l'exécution, mais cela peut être une perte dramatique de mémoire et est juste une mauvaise conception en général.
ArrayList
Photos
la classe ArrayList de la bibliothèque de java.util aborde certains de ces problèmes en enveloppant un ensemble de fonctions de gestionnaire dans un tableau caché. Ce tableau est stratégiquement augmentée ou diminuée en taille périodiquement de sorte que , en moyenne, ajouter et supprimer des éléments se produit très rapidement. Mais parfois , le caché, tableau interne doit simplement être redimensionnée , et dans ces cas, l' opération nécessitera une plus grande quantité de temps.
LinkedList
< p> le LinkedList va plus loin que le ArrayList et a effectivement aucun tableau que ce soit, caché ou non. Au lieu de cela , les dossiers sont raccordés ensemble enchaînés dans les noeuds , à chaque noeud contenant une référence à l'adresse mémoire de l'autre. L'avantage d'une LinkedList est que l'ajout ou la suppression de nouveaux éléments de données se produit toujours très rapidement le temps et il n'y a jamais eu de redimensionnement d'un tableau à effectuer. Toutefois, il est impossible d' accéder aux données dans le milieu de la liste , sans passer par la liste entière de l'avant ou à l'arrière , de sorte que le temps qu'il faut pour lire les données à partir du milieu d'une LinkedList peut être importante.
le ArrayList permet aux données n'importe où à l'intérieur pour être accessible très rapidement et, habituellement, peut redimensionner rapidement , mais nécessite parfois plus de temps lorsque son tableau interne doit être reconstruit . Le LinkedList peut toujours ajouter et supprimer des données de la liste très rapidement , mais la récupération de données à partir du milieu de la liste peut être longue . Cela rend la LinkedList un bon choix pour les piles et les files d'attente qui ne seront accessibles tout à l'avant ou à l'arrière , mais le ArrayList un meilleur choix comme un remplacement global pour le tableau simple.
HashSet < br > Photos
HashSet , comme les deux ArrayList et LinkedList , permet aux données d' être ajoutés et supprimés très, très rapidement , et il a aussi un autre avantage : un HashSet peut être recherchée très rapidement, plus rapidement qu'une tableaux, ArrayLists ou LinkedLists . Elle le fait en effectuant une opération mathématique sur un morceau de données afin de déterminer son index dans un tableau, puis en effectuant la même opération sur les données qui doivent être recherchées pour obtenir l'indice des données souhaités.
qui prête à confusion , ne vous inquiétez pas . La chose importante est que HashSet sont parfaits pour les ensembles de données qui devront être fouillé à plusieurs reprises. Mais ils ont aussi une faiblesse importante : un HashSet ne maintient pas l'ordre des données qui sont placés en lui, et l'ordre des éléments dans le jeu peut changer d'un moment à l'autre. Par exemple, dans un tableau de base , si un élément est placé à l'index 0 , le programmeur peut compter sur elle en restant à l'index 0 pour toujours jusqu'à ce qu'elle modifie. Mais dans un HashSet , un élément à l'index 0 à un moment pourrait bien être à l'indice 327 dans l'instant suivant .