[英]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.