Obtenir un HashSet de l'clés d'une table de hachage?

J'ai un assez gros (100'000s d'entrées) HashMap. Maintenant, j'ai besoin d'un HashSet contenant toutes les clés de cette HashMap. Malheureusement, HashMap ne dispose que d'un keySet() méthode qui renvoie une Set mais pas un HashSet.

Ce serait une façon efficace de générer un tel HashSet à l'aide de Java?

  • Pourquoi avez-vous besoin d'un HashSet et pas juste un Jeu?
  • Une méthode que j'ai appeler a besoin d'un HashSet et le code correspondant est n'était pas écrit par moi.
  • eww. celui qui a écrit cette méthode a besoin d'un bon de parler à. 🙂
  • +1 à Votre commentaire explique tout. Heureux que vous avez trouvé une solution. 🙂
  • Vous devriez savoir qu'il y a un gain de performance. Lorsque vous construisez le HashSet de keySet(), il devra en principe se dupliquer l'intégralité du jeu. Je ne suis pas sûr combien de temps il faut pour ce faire sur les 100 000 s d'éléments, mais il va certainement consomment beaucoup de mémoire. Je sais que vous n'avez pas d'autre option, mais cela peut vous donner plus de munitions à la demande de celui qui a écrit la méthode de le modifier afin qu'il prend un Ensemble plutôt qu'un HashSet. (Et à moins qu'ils sont en train de faire quelque chose de vraiment bizarre, ils devraient être en mesure de simplement changer le paramètre et le reste en œuvre sans modification).
  • Sauf si c'est un très bureaucratique projet que la méthode doit être réécrit (HashSet doit être remplacé par set). Si la méthode est trop long et alambiqué pour la refactorisation - eh bien, ce est un problème majeur. Une méthode doit faire une chose et ne devraient pas dépasser 10 lignes (20 lignes ne sont justifiées que si une instruction switch est utilisé).

InformationsquelleAutor Haes | 2009-10-26