以字符串和列表bean作为参数对树映射中的值进行排序



继续从我以前的问题张贴排序地图在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列表的对象的"顺序":应该比另一个小,因为列表元素的数量更少;因为单个列表元素的名称"更小";或者另一种定义良好的顺序?

最新更新