首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

TreeMap的一个异常 .cannot be cast to java.lang.Comparable

2012-09-06 
TreeMap的一个错误 ...cannot be cast to java.lang.Comparable今天在页面使用jstl的c:froEach遍历HashM

TreeMap的一个错误 ...cannot be cast to java.lang.Comparable
今天在页面使用jstl的<c:froEach>遍历HashMap

<c:forEach items="${ydMap }" var="m"><div /></a>:</div><div var="l"><span /></a></span></c:forEach></div></div></c:forEach>


但是每次刷新时顺序都会变化,原来HashMap是遍历时是无序的!如是就想到使用TreeMap
Map<BaseState,List<BlackChannelStates>> map=new TreeMap<BaseState,List<BlackChannelStates>>();

BaseState的代码 如下:
public class BaseState implements Comparable<BaseState>{private Integer id;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}}

但是使用后就一直报, ...cannot be cast to java.lang.Comparable
查看了TreeMap的原码发现HashMap有如下的构造方法:
    public TreeMap(Comparator<? super K> comparator) {        this.comparator = comparator;    }

原来TreeMap是有序的,有序就说明TreeMap中的每个Key元素都需要能比较,只有这样才能排序。如是我就在BaseState这个Bean改成了如下:
public class BaseState implements Comparable<BaseState>{private Integer id;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Overridepublic int compareTo(BaseState o) {// TODO Auto-generated method stubreturn o.getId()-this.getId();}}


此时再调用这个错误解决了!

热点排行