Java - فرز خريطة الشجرة حسب القيم باستخدام المقارنة

المجموعة TreeMap افتراضيا حسب مفاتيحه ، ولكن إذا كنت بحاجة إلى فرز TreeMap< / span> حسب القيم ، ثم توفر Java طريقة للقيام بذلك باستخدام المقارنة.

مثال:

package codeurjava; 

import java.util.* ؛

class TreeMapSort {

// فرز عناصر TreeMap حسب القيم
ثابت عام > Map sortByValues(Final Map map) {

Compartor valueComparator = new Compartor() {
public int compare (K k1, K k2) {
int compare = map.get(k1).compareTo(map.get(k2));
إذا (قارن == 0)
إرجاع 1 ؛ < br / > آخر
مقارنة العودة ؛
}
} ؛

Map TreeMap_triee_par_valeur = TreeMap الجديد(valueComparator);
TreeMap_triee_par_valeur.putAll(خريطة);
TreeMap_triee_par_valeur العودة ؛
}

الفراغ العام الثابت الرئيسي (سلسلة args []) {

TreeMap treemap = سلسلة TreeMap < string الجديدة = ""> ();

// elements
treemap.put("1"، "e4")؛
treemap.put ("2" ، "e5") ؛
treemap.put ("3" ، "e1") ؛
treemap.put ("4" ، "e3") ؛
treemap.put ("5" ، "e2") ؛

System.out.println("قبل الفرز:");

/* تصفح TreeMap غير المصنفة باستخدام المكرر * / < br / >
Set set = treemap.entrySet ();
المكرر i = set.iterator ();
// إظهار العناصر
بينما(i.hasNext()) {
Map.Entry entry entry entry = (Map.Entry)i.next();
System.out.print(entry.getKey() + ": ");
System.out.println(entry.getValue());
}

System.out.println ("بعد الفرز:") ؛
// استدعاء sortByvalues ()
طريقة الخريطة TreeMap_triee_par_valeur = sortByValues (treemap);

/* تصفح الخريطة الجديدة مرتبة باستخدام المكرر * /

set = TreeMap_triee_par_valeur.entrySet ();
i = set.iterator ();
// إظهار العناصر
بينما(i.hasNext()) {
Map.Entry entry entry entry = (Map.Entry)i.next();
System.out.print(entry.getKey() + ": ");
System.out.println(entry.getValue());
}

}
}
< / string >< / string >< / k>< / k>< / k>< / k>< / k>< / k>< / k>< / pre>

Execution< / p>

قبل الفرز: < >1: E4 < BR / >2: E5 < BR / >3: E1 < BR / >4: E3 < BR / >5: E2 < BR / > بعد الفرز: < br / >3: e1 < br / >5: e2 < br / >4: e3 
1: e4
2: e5
< / pre>

المراجع: < / p >< p > وثائق جافا - مقارنة (JavaSE 8) < / a>< / p>