Existe-t-il une implémentation plus efficace et spécialisée d'une collection Map où les objets Enum peuvent servir de clés?Comment utiliser efficacement les objets Enum en tant que clés dans la structure de données Map?
Répondre
J'ai appris ceci récemment après que je suis tombé accidentellement sur la réponse dans l'API Java. Si vous avez déjà une carte qui utilise des enums comme clés, assurez-vous d'utiliser EnumMap. Il est très simple et beaucoup plus efficace:
public interface LibraryItem{ ... }
public enum LibraryItemType{ BOOK, CD, VHS, AUDIO; ... }
Map<LibraryItemType, NavigableSet<LibraryItem>> itemsByType =
new EnumMap<>(LibraryItemType.class);
Oui. EnumMap
est précisément cela; une mise en œuvre efficace de l'interface Map
, dans lequel le type de clé doit être un ENUM:
De l'API documentation
:
Class EnumMap<K extends Enum<K>,V>
Une mise en œuvre spécialisée de la carte pour une utilisation avec ENUM tapez les clés. Toutes les clés d'une carte enum doivent provenir d'un seul type d'énumération spécifié explicitement ou implicitement lors de la création de la carte. Les cartes Enum sont représentées en interne sous forme de tableaux. Cette représentation est extrêmement compacte et efficace.
Exemple d'utilisation:
Map<MyEnum, String> map = new EnumMap<MyEnum, String>(MyEnum.class);
Oui ... veuillez vérifier les réponses existantes avant de répondre. C'était un message de réponse personnelle. – Andrey
Alors vous, 1. postez une question facile dont vous connaissez la réponse. 2. Rédigez une réponse à moitié cuite vous-même immédiatement. 3. Down-vote d'autres réponses parce que vous sentez que c'était en quelque sorte "votre question à répondre"? Je ne comprends pas .. pourquoi ?? pour la réputation? – aioobe
alors que je soutiens votre confusion et que je m'oppose certainement à la rétrogradation de l'OP, je ne pense pas qu'il y ait besoin d'une autre réponse à propos de 'EnumMap'. (C'est pourquoi j'ai supprimé le mien :)) – Bozho
BTW, il est plus simple d'écrire:
Map<MyEnum, String> map = new EnumMap<>(MyEnum.class);
Il n'y a pas besoin de répéter les types. Cela peut rendre le code beaucoup plus facile à lire.
- 1. Comment utiliser Enum en tant que paramètres NamedQuery dans JPA
- 2. Objets JPA ElementCollection que les clés
- 3. Peut-on utiliser des objets d'une structure en tant que membres d'une autre structure ou union?
- 4. Structure de données enum C++
- 5. Comment utiliser la paire valeur/clé STL non triée en tant que paire dans la carte
- 6. C++ passe ENUM en tant que paramètre
- 7. Déclarer un ENUM en tant que membre de la classe
- 8. Ordonné Structure de données qui permet d'éliminer efficacement les doublons
- 9. Enum en tant que paramètre dans Dynamics AX
- 10. NSDictionary avec NSDates en tant que clés
- 11. Comment utiliser DatePickerDialog en tant que préférence
- 12. Quelle structure de données utiliser?
- 13. Utilisation d'une table std :: map en tant que tableau associatif
- 14. Afficher les données en tant que mindmap
- 15. Aide sur Cocoa: les objets en tant que vues?
- 16. C++: Imprimez valeur ENUM en tant que texte
- 17. Utiliser les données avec une structure variable
- 18. Utiliser une propriété calculée en tant que DisplayColumn dans les données dynamiques ASP.Net?
- 19. Comment construire efficacement un arbre à partir d'une structure plane?
- 20. Comment utiliser efficacement valgrind
- 21. enums en tant que mini tables de données
- 22. Objet en tant que membre de données dans l'objectif C
- 23. Etude sur la structure Spring: Haricots gérés en tant que contrôleur et servlet Dispatcher en tant que contrôleur
- 24. Comment afficher les données XML stockées en tant que données globales dans la vue groupée
- 25. objective-c comment créer un tableau d'énumération avec ses valeurs de chaîne en tant que clés?
- 26. Comme enum mais pour les objets
- 27. Utiliser WordPress en tant que CMS
- 28. Utiliser la propriété en tant que méthode d'usine dans Spring.Net
- 29. Tronquer efficacement les objets Ruby Time
- 30. Rails: Comment utiliser efficacement self.inherited
Outre EnumMap, EnumSet peut également être utile. –
[Exactement droit] (http://java.sun.com/javase/6/docs/api/java/util/EnumSet.html) – Andrey