延续我之前发布的问题 Sorting a map in java
我正在尝试一种根据 TreeMap 的值对 TreeMap 进行排序的解决方案
让我声明 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 列表的对象的“顺序”应该是什么: 应该小于另一个,因为列表元素的数量较少;因为各个列表元素的名称“较小”;或者另一个明确定义的顺序?
关于java - 使用字符串和列表 bean 作为参数对 TreeMap 中的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427122/