繁体   English   中英

使用字符串和列表bean作为参数对树图中的值进行排序

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM