Tri d'un HashMap par valeurs
En Java, la structure de données HashMap fournit un moyen pratique de stocker des paires clé-valeur. Cependant, si vous devez accéder aux données en fonction des valeurs associées aux clés, trier le HashMap par valeurs est nécessaire.
Tri d'un HashMap par ordre croissant
Une approche pour trier un HashMap par valeurs consiste à utiliser un flux Java 8. L'extrait de code suivant montre comment procéder par ordre croissant :
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<Integer, String> unsortedMap = new HashMap<>(); unsortedMap.put(1, "froyo"); unsortedMap.put(2, "abby"); unsortedMap.put(3, "denver"); unsortedMap.put(4, "frost"); unsortedMap.put(5, "daisy"); // Sort the HashMap by values in ascending order Map<Integer, String> sortedMapAsc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.comparingByValue()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 2, abby // Key, Value : 5, daisy // Key, Value : 3, denver // Key, Value : 4, frost // Key, Value : 1, froyo System.out.println(sortedMapAsc); } }
Tri d'une HashMap par ordre décroissant
Pour trier une HashMap par valeurs par ordre décroissant, modifiez légèrement l'extrait de code ci-dessus :
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<Integer, String> unsortedMap = new HashMap<>(); unsortedMap.put(1, "froyo"); unsortedMap.put(2, "abby"); unsortedMap.put(3, "denver"); unsortedMap.put(4, "frost"); unsortedMap.put(5, "daisy"); // Sort the HashMap by values in descending order Map<Integer, String> sortedMapDesc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.<Integer, String>comparingByValue().reversed()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 1, froyo // Key, Value : 4, frost // Key, Value : 3, denver // Key, Value : 5, daisy // Key, Value : 2, abby System.out.println(sortedMapDesc); } }
Ce code affichera le trié HashMap avec des clés représentant les clés et valeurs d'origine triées par ordre décroissant. Les exemples d'ordre croissant et décroissant utilisent un LinkedHashMap pour maintenir l'ordre d'insertion, garantissant que les clés sont correctement associées aux valeurs triées.
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!