Quand utiliser HashMap sur LinkedList ou ArrayList et vice-versa

Quelle est la raison pour laquelle nous ne pouvons pas toujours utiliser un HashMap, même s’il est beaucoup plus efficace que ArrayList ou LinkedList dans add, supprimer des opérations, quel que soit le nombre d’éléments.

Je l’ai googlé et trouvé des raisons, mais il y avait toujours une solution pour utiliser HashMap, avec des avantages encore vivants.

Les listes représentent un classement séquentiel d’éléments. Les cartes sont utilisées pour représenter une collection de paires clé / valeur.

Bien que vous puissiez utiliser une carte sous forme de liste, il existe des inconvénients certains.

Maintien de l’ordre: – Une liste par définition est ordonnée. Vous ajoutez des éléments et vous pouvez ensuite parcourir la liste dans l’ordre dans lequel vous avez inséré les éléments. Lorsque vous ajoutez des éléments à un HashMap, vous n’êtes pas certain de pouvoir récupérer les éléments dans le même ordre que celui dans lequel vous les avez placés.

Sémantique de la clé / valeur: – Le but d’une carte est de stocker des éléments en fonction d’une clé pouvant être utilisée pour récupérer l’élément ultérieurement. Une fonctionnalité similaire ne peut être obtenue qu’avec une liste dans le cas limité où la clé se trouve être la position dans la liste.

Lisibilité du code Considérons les exemples suivants.

  // Adding to a List list.add(myObject); // adds to the end of the list map.put(myKey, myObject); // sure, you can do this, but what is myKey? map.put("1", myObject); // you could use the position as a key but why? // Iterating through the items for (Object o : myList) // nice and easy for (Object o : myMap.values()) // more code and the order is not guaranteed 

Fonctionnalité de collecte Certaines fonctions utilitaires sont disponibles pour les listes via la classe Collections. Par exemple …

  // Randomize the list Collections.shuffle(myList); // Sort the list Collections.sort(myList, myComparator); 

J’espère que cela t’aides,

Les listes et les cartes sont des structures de données différentes. Les cartes sont utilisées lorsque vous souhaitez associer une clé à une valeur et les listes sont une collection ordonnée.

Map est une interface dans Java Collection Framework et HashMap est une implémentation de l’interface Map. HashMap est efficace pour localiser une valeur basée sur une clé et insérer et supprimer des valeurs basées sur une clé. Les entrées d’un HashMap ne sont pas commandées.

ArrayList et LinkedList sont une implémentation de l’interface List. LinkedList fournit un access séquentiel et est généralement plus efficace pour insérer et supprimer des éléments dans la liste. Cependant, il est moins efficace pour accéder aux éléments d’une liste. ArrayList fournit un access aléatoire et est plus efficace pour accéder aux éléments, mais est généralement plus lent lors de l’insertion et de la suppression d’éléments.