Utiliser le Map<K, V> de l'interface, et la HashMap<K, V> de la classe par exemple. Ou voir le "Connues de Tous les sous-interfaces" dans la section de Map<K, V> description de l'interface pour plus d'implémentations.
Habituellement, j'ai préféré java.util.TreeMap à une table de hachage. Ce n'est pas tout à fait aussi rapide, mais vous n'avez pas à vous soucier des algorithmes de hachage ou de réglage de la taille. Le plus important, c'est de mémoire, car il utilise des petits morceaux de mémoire plutôt que d'attribuer de vastes tableaux. Si vous avez un contrôle étroit sur vos Cartes de la création et de l'élimination, de connaître à l'avance la quantité de données qu'ils détiennent, et de connaître le nombre d'entrées varient pas de façon spectaculaire que votre programme s'exécute, utiliser une table de hachage. Sinon, utilisez un Treemap.
Les autres vraiment cool de la Carte, je n'ai pas encore rencontre l'aime de dans .NET, est java.util.de façon concomitante.ConcurrentSkipListMap. C'est excellent pour le multithread situations. Il est complètement thread-safe et il est non bloquant.
(J'ai trouvé cette question tout en regardant un fermé pour être un doublon. J'ai pensé à ces deux questions pourraient utiliser une réponse qui dit quelque chose d'autre que HashMaps, bon comme HashMaps sont pour la plupart des utilisations et similaires, car ils sont à la C# Dictionnaire.)
Vous êtes à la recherche d'une alternative à la générique IDictionary en C# qui prend (clé,valeur) paires.
En Java, il y a un Dictionnaire classe qui est la classe mère de la classe, qui l'accepte (clé,valeur) paires.
Un HashTable (qui s'étend du Dictionnaire) sera adapté à votre besoin. Il effectue des opérations comme copier, supprimer, ajouter, vérifier si un élément existe et cætera. Cependant, alors que IDictionary prend en charge boucle foreach en C#, faire une boucle sur une table de hachage en Java, vous aurez besoin d'un Itérateur.
Un avantage supplémentaire avec des tables de hachage, c'est qu'il est synchronisé, donc vous n'auriez pas à vous soucier de la concurrence.
Cependant, SI vous êtes à la recherche pour une implémentation asynchrone, vous devez utiliser le HashMap. Une HashMap trop exige un Itérateur pour parcourir à travers elle.
Sans aucun doute, vous avez aussi besoin de regarder comment un Itérateur fonctionne en Java.
Java a Hashtable et HashMap
Voir Les différences entre les HashMap et table de hachage?
OriginalL'auteur Muhammad Hasan Khan
Utiliser le
Map<K, V>
de l'interface, et laHashMap<K, V>
de la classe par exemple. Ou voir le "Connues de Tous les sous-interfaces" dans la section deMap<K, V>
description de l'interface pour plus d'implémentations.http://download.oracle.com/javase/6/docs/api/java/util/Map.html
OriginalL'auteur Matthias Meid
L'interface que vous cherchez est
Map<K, V>
.Pour une mise en œuvre est similaire à C#'s
Dictionary
essayerHashMap<K, V>
OriginalL'auteur Mark Byers
Habituellement, j'ai préféré java.util.TreeMap à une table de hachage. Ce n'est pas tout à fait aussi rapide, mais vous n'avez pas à vous soucier des algorithmes de hachage ou de réglage de la taille. Le plus important, c'est de mémoire, car il utilise des petits morceaux de mémoire plutôt que d'attribuer de vastes tableaux. Si vous avez un contrôle étroit sur vos Cartes de la création et de l'élimination, de connaître à l'avance la quantité de données qu'ils détiennent, et de connaître le nombre d'entrées varient pas de façon spectaculaire que votre programme s'exécute, utiliser une table de hachage. Sinon, utilisez un Treemap.
Les autres vraiment cool de la Carte, je n'ai pas encore rencontre l'aime de dans .NET, est java.util.de façon concomitante.ConcurrentSkipListMap. C'est excellent pour le multithread situations. Il est complètement thread-safe et il est non bloquant.
(J'ai trouvé cette question tout en regardant un fermé pour être un doublon. J'ai pensé à ces deux questions pourraient utiliser une réponse qui dit quelque chose d'autre que HashMaps, bon comme HashMaps sont pour la plupart des utilisations et similaires, car ils sont à la C# Dictionnaire.)
OriginalL'auteur RalphChapin
Vous êtes à la recherche d'une alternative à la générique IDictionary en C# qui prend (clé,valeur) paires.
En Java, il y a un Dictionnaire classe qui est la classe mère de la classe, qui l'accepte (clé,valeur) paires.
Un HashTable (qui s'étend du Dictionnaire) sera adapté à votre besoin. Il effectue des opérations comme copier, supprimer, ajouter, vérifier si un élément existe et cætera. Cependant, alors que IDictionary prend en charge boucle foreach en C#, faire une boucle sur une table de hachage en Java, vous aurez besoin d'un Itérateur.
Un avantage supplémentaire avec des tables de hachage, c'est qu'il est synchronisé, donc vous n'auriez pas à vous soucier de la concurrence.
Cependant, SI vous êtes à la recherche pour une implémentation asynchrone, vous devez utiliser le HashMap. Une HashMap trop exige un Itérateur pour parcourir à travers elle.
Sans aucun doute, vous avez aussi besoin de regarder comment un Itérateur fonctionne en Java.
Tables de hachage: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html
HashMaps: http://download.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html
Itérateur: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html
OriginalL'auteur r3st0r3