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

标签 java hashmap comparator treemap comparable

延续我之前发布的问题 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/

相关文章:

super.paintComponents(g) 的 Java 问题,它生成打印屏幕

java - 部署 Java WAR 文件时出错 : SEVERE: Exception fixing docBase for context

java - 如何创建混合类型的嵌套 HashMap ?

Java比较器排序顺序

android - 使用比较器排序不起作用

java - Android 没有捕获 Jersey RESTful 异常

java - hadoop wordcount示例java.lang.NoClassDefFoundError:hdfs错误

java - 根据出现次数打印

java - 限制 Java HashMap 中 get 方法的对象类型

java - 对卡片对象进行排序