On m'a posé cette question lors de mon interview "Comment créer Linkedhashset en utilisant Hashset?" quelqu'un connaît la réponse?Comment créer Linkedhashset en utilisant Hashset?
Répondre
La classe LinkedHashSet a un constructeur public LinkedHashSet(Collection<? extends E> c)
, vous pouvez donc faire
HashSet<Foo> hs = new HashSet<Foo>();
// add items...
LinkedHashSet<Foo> lhs = new LinkedHashSet<Foo>(hs);
pour obtenir une instance LinkedHashSet avec le même contenu que hs
. Notez qu'il n'y a aucune garantie que les articles de hs
sont insérés dans lhs
dans le même ordre où ils ont été insérés dans hs
, puisque cette information n'a jamais été enregistrée par hs
.
Il n'existe aucun moyen de créer un "HashSet qui se comporte comme LinkedHashSet", c'est-à-dire une instance de la classe d'exécution HashSet
qui se comporte comme une instance LinkedHashSet
. Cependant, vous pouvez faire
HashSet<Foo> hs = new LinkedHashSet<Foo>();
qui vous donnerait une instance qui serait vu par le monde extérieur comme une HashSet
simple mais utiliser la mise en œuvre en interne LinkedHashSet
. Je n'arrive pas à voir pourquoi vous voudriez jamais faire cela, cependant - vous obtiendriez seulement un tas d'overhead et aucune fonctionnalité ajoutée, puisque le type déclaré est HashSet
. La raison pour laquelle vous souhaitez utiliser un LinkedHashSet en premier lieu est de garantir l'ordre d'itération prévisible, mais vous ne pouvez toujours pas supposer que pour hs
- vous pouvez affecter hs = new HashSet<Foo>()
à tout moment, par exemple.
Merci beaucoup Emil. – ACS
Il est considéré comme de bonnes manières d'accepter une réponse qui vous a aidé. :) –
- 1. HashSet et LinkedHashSet
- 2. HashSet Vs LinkedHashSet Test de performance
- 3. Commande d'éléments en Java HashSet
- 4. Bug dans LinkedHashSet javadoc?
- 5. Comment je peux trier POJO en utilisant LinkedHashSet
- 6. Comment convertir LinkedHashSet en tableau bidimensionnel
- 7. HashSet `.ToArray()` en utilisant F #
- 8. HashSet retainAll utilisant l'interface
- 9. Est-ce que LinkedHashSet dans ce code peut être remplacé par un HashSet?
- 10. HashSet vs LinkedHashSet et des résultats différents pour la même tâche
- 11. Remplacer le contenu HashSet sans créer de nouvelles HashSet objet
- 12. Mot d'arrêt utilisant HashSet
- 13. (Résolu) Comment ajouter des chaînes à un LinkedHashSet?
- 14. Conversion de ArrayList personnalisé en LinkedHashSet
- 15. Comment créer TreeSet en utilisant un HashSet existant avec des données?
- 16. Comment convertir HashSet en byte []?
- 17. Comment comparer deux DataSet en utilisant HashSet dans asp.net C#
- 18. Tri d'un LinkedHashSet
- 19. Java LinkedHashSet loadFactor
- 20. 'Set = new HashSet' ou 'HashSet = new Hashset'?
- 21. LinkedHashSet pour mettre en œuvre LRU
- 22. TreeSet et HashSet
- 23. Comment étendre le HashSet en Java?
- 24. Java: Créer des objets avec HashSet
- 25. Comment créer un HashSet à partir d'un ensemble? Il
- 26. Créer une ArrayList pour stocker HashSet en Java
- 27. java LinkedHashSet récupérer la valeur
- 28. Comment créer un HashSet à partir d'une liste?
- 29. Objets Java uniques dans un LinkedHashSet
- 30. Java: Comment cloner en profondeur un HashSet?
Java? Et que voulez-vous dire par "utiliser Hashset"? –
oui pour Java, fondamentalement un HashSet qui se comporte comme LinkedHashSet, l'ordre d'insertion est préservé. Dis, je n'ai que HashSet et je veux le faire comme LinkedHashSet. – ACS