继续从我以前的问题张贴排序地图在java
我正在尝试一种解决方案,根据它的值对树图进行排序
让我声明Map
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列表的对象的"顺序":应该比另一个小,因为列表元素的数量更少;因为单个列表元素的名称"更小";或者另一种定义良好的顺序?