2010-06-12 4 views

Répondre

0

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); 
18

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); 
+0

Oui ... veuillez vérifier les réponses existantes avant de répondre. C'était un message de réponse personnelle. – Andrey

+2

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

+1

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

1

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.

Questions connexes