Maison >Java >javaDidacticiel >Comment puis-je trier un HashMap par ses valeurs en Java ?
Tri d'un HashMap par valeurs
Tri d'un HashMap par ses valeurs peut être une opération utile dans divers scénarios de programmation. Pour effectuer cette tâche efficacement, nous pouvons exploiter les fonctionnalités intégrées de Java et implémenter une logique de tri personnalisée.
Utilisation de Java Lambdas et Streams :
Utilisation des expressions lambda de Java 8 et streams fournit une approche concise et moderne pour trier une HashMap. L'extrait de code suivant illustre cette technique :
import java.util.*; import java.util.stream.Collectors; public class HashMapSort { public static void main(String[] args) { HashMap<Integer, String> map = new HashMap<>(); map.put(1, "froyo"); map.put(2, "abby"); map.put(3, "denver"); map.put(4, "frost"); map.put(5, "daisy"); // Sort the HashMap by values in ascending order Map<Integer, String> sortedMapAsc = map.entrySet() .stream() .sorted(Comparator.comparing(Map.Entry::getValue)) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, LinkedHashMap::new)); // Print the sorted map for (Map.Entry<Integer, String> entry : sortedMapAsc.entrySet()) { System.out.println(entry.getKey() + "," + entry.getValue()); } } }
Tri personnalisé :
Alternativement, nous pouvons implémenter un algorithme de tri personnalisé à l'aide d'un comparateur. Cette approche nous donne plus de flexibilité et de contrôle sur le processus de tri :
import java.util.*; public class HashMapSort { public static void main(String[] args) { HashMap<Integer, String> map = new HashMap<>(); map.put(1, "froyo"); map.put(2, "abby"); map.put(3, "denver"); map.put(4, "frost"); map.put(5, "daisy"); // Define a custom comparator to sort by values Comparator<Map.Entry<Integer, String>> comparator = new Comparator<>() { @Override public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) { return o1.getValue().compareTo(o2.getValue()); } }; // Sort the HashMap by values in ascending order List<Map.Entry<Integer, String>> sortedList = new ArrayList<>(map.entrySet()); sortedList.sort(comparator); // Print the sorted map for (Map.Entry<Integer, String> entry : sortedList) { System.out.println(entry.getKey() + "," + entry.getValue()); } } }
En conclusion, le tri d'une HashMap par ses valeurs peut être réalisé à l'aide de diverses techniques, notamment des lambdas et des flux Java ou des implémentations de comparateurs personnalisés. Le choix de l'approche dépend des exigences spécifiques et du contexte de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!