2 votes

Triage de LinkedHashMap par clé java

Je suis un débutant et j'ai beaucoup de mal avec les cartes. J'ai donc une carte et je veux la classer par clés dans l'ordre croissant. Mais je n'arrive pas à trouver de solution à cela. Merci pour votre aide !

 LinkedHashMap<String, String> resulting= new LinkedHashMap<>();
 resulting=resulting.entrySet().stream().sorted((a,b)->{
        String first=a.getKey();
        String second=b.getKey();
        return first.compareTo(second)
    });

8voto

GhostCat Points 83269

Un LinkedHashMaP est commandé sur la base de la insertion l'ordre. Si vous souhaitez que l'ordre naturel d'un LinkedHashMap reflète un critère de tri de certains objets, vous devez alors premièrement doivent établir cet ordre sur ces objets, avant de puis en ajoutant les objets dans cet ordre à une nouvelle instance de LinkedHashMap.

En d'autres termes, vous ne pouvez pas changer l'ordre d'une existant LinkedHashMap - parce que la commande était Correction de lorsque vous avez ajouté les éléments à cette carte initialement ! Ou pour être précis : vous ne pouviez le faire qu'en étendant la classe LinkedHashMap et en en changeant son comportement à rupture son contrat. Mais cela n'a pas de sens. Vous utilisez simplement le mauvais structure de données pour mettre en œuvre votre exigence.

Si vous voulez une carte qui réorganise le site en fonction d'un critère de tri, vous devriez vous intéresser à un TreeMap par exemple !

Pour faire court : vous devez faire la différence entre "ordre basé sur l'ordre d'insertion" et "ordre résultant de critères de tri". Vous voulez le dernier, et LinkedHashMap n'est pas le bon type de carte pour cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X