zoukankan      html  css  js  c++  java
  • cannot be cast to java.lang.Comparable解决办法

            对于TreeMap,他是一个有序的map,当你将key put到treeMap中,它会根据你所提供的排序规则进行排序插入,如果没有提供,则使用默认。

            cannot be cast to java.lang.Comparable,遇到这个异常错误,就是说treeMap并不知道该如何put,就会报这个异常错误。第一次put时,因为为空,所以不需要比较,即不会报错。但是当第二次put时,treeMap为了确保他是有序的就必须比较,这个时候发现这两个key根本无法比较,则抛出该异常错误。

            要解决这个异常错误有两种解决办法。第一种在构造TreeMap时指定一个比较器,这个比较器用于比较两个值,并且返回一个整数值作为他们的比较结果。第二种就是key实现Comparable接口。

            下面实例是我做毕业设计过程中,对订单进行排序使用的TreeMap构造器:

    /**
              * 获取指定构造器的TreeMap对象
              */
             publicMap<Order, List<OrderDetail>> getTreeMap(){
                       Map<Order,List<OrderDetail>> map = new TreeMap<Order,List<OrderDetail>>(
                                         //比较器按照降序实现
                                         (Comparator<?super Order>) new Comparator<Order>(){
                                                   publicint compare(Order order1, Order order2) {
                                                            returnorder2.getOrderId().compareTo(order1.getOrderId());
                                                   }
                                         }
                       );
                       returnmap;
             }


  • 相关阅读:
    H2嵌入式数据库的各种连接方式
    大数据平台建设的思考
    hive中的一些参数
    sqoop job 踩过的坑
    【转】awk、nawk、mawk、gawk的简答介绍
    awk用法
    hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法
    hive中order by,sort by, distribute by, cluster by的用法
    python连接mysql
    pycharm注册码
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752136.html
Copyright © 2011-2022 走看看