Maison > Java > JavaBase > le corps du texte

La carte en Java peut-elle être triée en fonction de la clé ?

Libérer: 2020-01-14 13:32:51
original
4222 Les gens l'ont consulté

La carte en Java peut-elle être triée en fonction de la clé ?

Méthodes de tri couramment utilisées pour les cartes en Java : trier par clé, trier par valeur. Recommandé : Tutoriel vidéo Java

1. Trier par clé

TreeMap sous le package java.util intégré de jdk peut répondre à de tels besoins. La méthode TreeMap (Comparator comparator) peut être triée par clé en passant notre comparateur personnalisé.

Méthode de tri ascendant par défaut :

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
 
public class TEST {
 
    public static void main(String[] args) {
        TEST t = new TEST();
        t.sort();
    }
     
    public void sort(){
        Map<String, String> treeMap = new TreeMap<String, String>();
        treeMap.put("c", "ccccc"); 
        treeMap.put("a", "aaaaa"); 
        treeMap.put("b", "bbbbb"); 
        treeMap.put("d", "ddddd"); 
        Set<String> s = treeMap.keySet();
        for (String key : s) { 
            System.out.println(key+" : "+treeMap.get(key)); 
        } 
    }
}
Copier après la connexion

Résultat de sortie :

a : aaaaa
b : bbbbb
c : ccccc
d : ddddd

2. Tri par valeur

Le tri par valeur est relativement gênant. Il semble qu'il n'existe pas de structure de données directement disponible qui puisse gérer des exigences similaires, nous devons donc la convertir. nous-mêmes.

Le tri de la carte par valeur est très significatif. Des exigences similaires seront rencontrées dans de nombreuses situations. Sa valeur peut être considérée comme une règle ou un poids défini.

Principe : placez tous les éléments de la carte à trier dans une liste, puis utilisez une méthode statique de tri des collections (Liste liste, Comparateur c)

Pour trier la liste, vous utilisez également un comparateur pour définir des règles de comparaison. Les éléments de la liste triée sont ensuite chargés dans la Map dans l'ordre. Afin de garantir définitivement que les éléments de la Map sont dans le même ordre que les éléments de la List triée, le type de données LinkedHashMap est utilisé.

Code d'implémentation

public class MapSortDemo {

    public static void main(String[] args) {

        Map<String, String> map = new TreeMap<String, String>();

        map.put("KFC", "kfc");
        map.put("WNBA", "wnba");
        map.put("NBA", "nba");
        map.put("CBA", "cba");

        Map<String, String> resultMap = sortMapByKey(map);    //按Key进行排序
//        Map<String, String> resultMap = sortMapByValue(map); //按Value进行排序

        for (Map.Entry<String, String> entry : resultMap.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
    
    /**
     * 使用 Map按value进行排序
     * @param map
     * @return
     */
    public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {
        if (oriMap == null || oriMap.isEmpty()) {
            return null;
        }
        Map<String, String> sortedMap = new LinkedHashMap<String, String>();
        List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(
                oriMap.entrySet());
        Collections.sort(entryList, new MapValueComparator());

        Iterator<Map.Entry<String, String>> iter = entryList.iterator();
        Map.Entry<String, String> tmpEntry = null;
        while (iter.hasNext()) {
            tmpEntry = iter.next();
            sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
        }
        return sortedMap;
    }
}
Copier après la connexion

Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base Java sur le site Web PHP chinois.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal