[英]Sorting values in a tree map with string and list bean as parameters
上一個問題的延續: 用Java對地圖進行排序
我正在嘗試一種解決方案,根據其值對樹圖進行排序
讓我宣布地圖
Map<String, List<Bean>> sortedBeanMap =new TreeMap<String,List<Bean>>();
我創建了一個單獨的比較器方法來比較這些值。
public class MapSort {
public static Map sortByValue(Map unsortedMap){
Map sortedMap = new TreeMap(new ValueComparator(unsortedMap));
sortedMap.putAll(unsortedMap);
return sortedMap;
}
public static Map sortByKey(Map unsortedMap){
Map sortedMap = new TreeMap();
sortedMap.putAll(unsortedMap);
return sortedMap;
}
}
ValueComparator類
public class ValueComparator implements Comparator {
Map map;
public ValueComparator(Map map){
this.map = map;
}
public int compare(Object keyA, Object keyB){
Comparable valueA = (Comparable) map.get(keyA);
Comparable valueB = (Comparable) map.get(keyB);
System.out.println(valueA +" - "+valueB);
return valueA.compareTo(valueB);
}
}
我知道值應該是與Work相當的字符串類型。但是在我的情況下,它將是一個bean列表。那么如何使比較器在我的情況下起作用?
我在這個問題上停留了一陣子..任何建議和想法都很棒。
預先謝謝你們...
由於這是家庭作業,因此不會提供完整的代碼。
您走在正確的軌道上。 不要為您的對象創建一個類,並為Comparable實現所需的方法。 您可以決定具有一個bean列表的兩個對象的“順序”是什么:應該小於另一個,因為list元素的數量較少; 因為各個列表元素的名稱都較小。 或其他定義明確的排序?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.