我有一个HashMap里面的key值是一个对象value值是一个List,现在我想给HashMap排序,把大小为0或者为NULL的List放到后面去,该怎么办啊???请教高手!!!

解决方案 »

  1.   

    有个问题啊,我的TreeMap的Key值保存是对象,VALUE值是一个List,每次当我放入第二个Key值(一个对象)的时候就报错!
    异常:
    java.lang.ClassCastException: com.java.ipmsys.entity.TEquipment
      

  2.   

    我以前用的是HashMap里面存的就是对象,现在我想排序,所以改用TreeMap,结果就报错了!
    Key值我保存的也是一个实体类,Value值保存的是一个实体类的集合
    我在页面上需要用到实体类里的两个属性,所以就把key值保存为key值了我没用过TreeMap,难道TreeMap里面Key值不能为对象吗?可我的程序明明第一次,存储成功了
    第二次存储的时候就出错啦!
    代码如下:
    for(int i = 0;i<equipList.size();i++){
    List list = equipPropBiz.findByEquipNo(equipList.get(i).toString());
    List tempList = new ArrayList();
    com.java.ipmsys.entity.TEquipment equipName = this.equipName(equipList.get(i).toString());
    for(int j = 0;j<list.size();j++){
    TEquipProp tep = (TEquipProp) list.get(j);
    CequipPropList cep = new CequipPropList(this.propList(propList, tep.getPropId()),tep.getInitValue());
    tempList.add(cep);

    }

    tempList = this.sortList(tempList);
    map.put(equipName, tempList);}
    第一次i为0的时候,可以向map里正确的保存key value值
    第二次i为1的时候,就出现上面帖子里面的异常啦
      

  3.   

    根据key值分配地址的 key不能重复 
      

  4.   

    可是HashMap就可以啊,我的key值里面存的又不是同一个对象,是不同的对象啊
    这也不行?
      

  5.   

    重写   compareto 方法  
      

  6.   

    同意楼上  创建 treemap时 写个匿名内部类 重写compareto 方法 不然它不知道按照对象中的那个属性比较
    比如你比较 学号大小什么的。 自己写的类的两个对象之间没办法比较大小
      

  7.   

    有些时候我不考虑MAP排序的问题 假设只是针对KEY去排序 我会在把KEY保存到MAP中的同时也保存到一个LIST 在LIST完成排序 取的时候根据LIST来顺序来取
      

  8.   

    map虽然说是无序的,但是他还是有这一定的规则,HashMap是用的Hash码来排序的。所以你要排序的话可以覆盖其中的hashCode方法。将空值的hashcode放在后边试试。