import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Tri {
public static void main(String[] args) {
HashMapmap = new HashMap ();
Comparateur comp = new Comparateur(map);
TreeMapmap_apres = new TreeMap (comp);
map.put("A",49);
map.put("B",18);
map.put("C",92);
map.put("D",37);
map.put("E",62);
System.out.println("Avant le tri: "+map);
map_apres.putAll(map);
System.out.println("Après le tri: "+map_apres);
}
}
class Comparateur implements Comparator{
Maptuple;
public Comparateur(HashMapmap) {
this.tuple = map;
}
//ce comparateur ordonne les éléments dans l'ordre décroissant
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
if ((int) tuple.get(o1) >= (int) tuple.get(o2)) {
return -1;
} else {
return 1;
}
}
}
public static void main(String[] args) {Exécution:
HashMapmap = new HashMap ();
map.put("A",18.5);
map.put("E",76.8);
map.put("C",24.1);
map.put("F",86.2);
map.put("D",5.7);
map.put("B",84.6);
System.out.println("Avant le tri: "+map);
System.out.println("Après le tri: "+triAvecValeur(map));
}
public static HashMap<String, Double> triAvecValeur( HashMap<String, Double> map ){
List<Map.Entry<String, Double>> list =
new LinkedList<Map.Entry<String, Double>>( map.entrySet() );
Collections.sort( list, new Comparator<Map.Entry<String, Double>>(){
public int compare( Map.Entry<String, Double> o1, Map.Entry<String, Double> o2 ){
return (o1.getValue()).compareTo( o2.getValue());
}
});
HashMap<String, Double> map_apres = new LinkedHashMap<String, Double>();
for(Map.Entry<String, Double> entry : list)
map_apres.put( entry.getKey(), entry.getValue() );
return map_apres;
}
Avant le tri: {D=5.7, E=76.8, F=86.2, A=18.5, B=84.6, C=24.1}Pour faire le tri dans le sens décroissant, il suffit de modifier l'ordre de la comparaison dans la fonction compare:
Après le tri: {D=5.7, A=18.5, C=24.1, E=76.8, B=84.6, F=86.2}
Références:return (o2.getValue()).compareTo( o1.getValue());
Please disable your ad blocker and refresh the window to use this website.