Comment Java Trie les cartes

Vers le Haut 2022-01-15 02:41:52 阅读数:938

comment java trie les cartes

MapTrier(Appuyez.keyTrier,Appuyez.valueTrier)

Il existe principalement deux types de,Trier les touches、Trier par valeur. Et,Appuyez.keyLe tri est principalement utilisé pourTreeMap,Et appuyervalueTrier pourMapToutes les sous - classes de.

Un.、Trier les touches

Appuyez.KeyLe tri est principalement utilisé pourTreeMap,Peut être réalisé selonKeyTaille de la valeur,Insérez - le directement à l'endroit approprié lorsque l'objet est inséré,Tiens bon.MapSéquentiel.

Viens voir.TreeMapLe constructeur de:TreeMap(Comparator<? super K> comparator):Construire un nouveau、Carte arborescente vide,La carte est triée selon un comparateur donné.

Le comparateur ici estkeyLe Comparateur de.Les deux paramètres utilisés pour la comparaison lors de la définition du comparateur sontKeyObjet du type de données pour.

Les codes d'exemple sont les suivants::

public class MapSortTest {

public static void main(String[] args) {

Map<String,String> stu=new TreeMap<>(new MyComparator());//Il y a eu unkeyObjet de comparaison pour construiretreemap
stu.put("apple", "55");
stu.put("boy", "32");
stu.put("cat", "22");
stu.put("dog", "12");
stu.put("egg", "11");
//mapTraversée de:Prends ça.key Pour extraire setStockage, Et ensuite traverser avec un Itérateur keyset,Utilisation simultanéemap.get(KEY)AccèskeyCorrespondantvalue.
Set<String> keySet=stu.keySet();
Iterator it=keySet.iterator();
while (it.hasNext()) {

String next = (String)it.next();
System.out.println(next+","+stu.get(next));
}
}
}
//DéfinitionkeyLe Comparateur de, L'algorithme de comparaison est basé sur le premier paramètre o1,Moins de、égal ou supérieur ào2Renvoie un entier négatif séparément、0Ou un entier positif, Pour déterminer l'ordre de stockage : Renvoie un nombre négatif o1Avant, Nombre positif o2Avant.
class MyComparator implements Comparator<String>{

public int compare(String o1, String o2) {

return o1.compareTo(o2);
}
}

**

2.、Trier par valeur

Utiliser uniquement avec le tri par valeur TreeMapC'est différent., Trier par valeur en raison de l'uniformité des types utilisés par leurs méthodes ,Il peut donc être utilisé pourMapToutes les sous - classes de.

Les principaux points de connaissance utilisés sont les suivants: ;

1:map.entrySet()Oui.map Chaque paire de valeurs clés dans le Entry Objet et stockage dans un SetÀ l'intérieur.

2:GénéralitésMap.Entry<type1,type2> Parce queKey-valueCompositionEntryObjet, Indiquer ici Entry Types de données pour les deux membres de l'objet .

3:Collections.sort(List list, Comparator<? super T> c) Méthode de tri des classes de collection , Trier par un comparateur personnalisé .Ici.list Les objets stockés sont: entryObjet. Définir une paire de comparateurs entryDans l'objetvaluePropriétés à comparer.

Les codes d'exemple sont les suivants::

public class MapSortTest {

public static void main(String[] args) {

Map<String,String> stu=new TreeMap<>();//AvecTreeMapStockage
// Map<String,String> stu=new HashMap<>();//AvecHashMapStockage
stu.put("apple", "55");
stu.put("boy", "32");
stu.put("cat", "22");
stu.put("dog", "12");
stu.put("egg", "11");
//1:Prends ça.mapConvertir enentryset, Convertir en enregistrer EntryObjetlist.
List<Map.Entry<String,String>> entrys=new ArrayList<>(stu.entrySet());
//2:AppelezCollections.sort(list,comparator)MéthodeEntry-listTrier
Collections.sort(entrys, new MyComparator());
//3:Traversée ordonnéeEntry-list, Vous pouvez obtenir des résultats séquentiels 
for(Map.Entry<String,String> entry:entrys){

System.out.println(entry.getKey()+","+entry.getValue());
}
}
}
//PersonnalisationEntry Comparateur d'objets .ChaqueEntryL'objet est accessible viagetKey()、getValue()ObtenirKeyOuValuePour comparer.En d'autres termes,:Nous pouvons également passer parEntry Mise en œuvre de l'objet par KeyTrier.
class MyComparator implements Comparator<Map.Entry>{

public int compare(Map.Entry o1, Map.Entry o2) {

return ((String)o1.getValue()).compareTo((String)o2.getValue());
}
}
版权声明:本文为[Vers le Haut]所创,转载请带上原文链接,感谢。 https://javamana.com/2022/01/202201080601056260.html