`
安静的转着
  • 浏览: 11263 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

TreeMap的一个错误 ...cannot be cast to java.lang.Comparable

阅读更多
今天在页面使用jstl的<c:froEach>遍历HashMap
		<c:forEach items="${ydMap }" var="m">
			<div class="mbody">
				<div class="title cv">${m.key.stateName }<a href="${pageContext.request.contextPath }/pl/deleteBlackStatesByState.do?id=${m.key.id }&flag=0"><img src="${pageContext.request.contextPath }/images/jh.png" /></a>:</div>
				<div class="text">
					<c:forEach items="${m.value }" var="l">
						<span class="cv">${l.states }<a href="${pageContext.request.contextPath }/pl/removeBlackStates.do?id=${l.id }"><img src="${pageContext.request.contextPath }/images/jh.png" /></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;
	}


	@Override
	public int compareTo(BaseState o) {
		// TODO Auto-generated method stub
		return o.getId()-this.getId();
	}
}


此时再调用这个错误解决了!
分享到:
评论

相关推荐

    TreeMap源码解读.java

    TreeMap源码解读.java

    Python库 | disk_treemap-1.0.8.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:disk_treemap-1.0.8.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    PyPI 官网下载 | treemap-1.01.tar.gz

    本次我们关注的是名为"treemap-1.01.tar.gz"的资源,这是一个在PyPI上发布的Python库,专门用于实现Treemap数据可视化。让我们一起深入探讨这个库的核心功能、应用场景以及如何在实际项目中使用。 Treemap是一种...

    List和Treemap排序实例及效率对比

    本资源提供了List对对象中的属性和TreeMap, String&gt;对键值排序,并针对100w条数据排序,对比List和TreeMap, String&gt;排序的效率。个人认为排序效率对比可以相信,但也可能存在不科学之处,还请高手给与指点,多多包涵...

    vue_echarts_treemap.zip

    在"vue_echarts_treemap.zip"中,我们可以看到开发者已经为 Vue 2.x 版本的 ECharts 提供了一个关于 TreeMap 的示例。这个示例可能包含了以下关键知识点: 1. **Vue 2.x 基础**:首先,你需要了解 Vue 2.x 的基本...

    TreeMap in Java_java_treemap_

    Java中的`TreeMap`是一个基于红黑树(Red-Black Tree)数据结构的有序映射容器。它维护了键的自然顺序或者根据提供的比较器进行排序。`TreeMap`类继承自`AbstractMap`,实现了`NavigableMap`、`SortedMap`接口,因此...

    java treemap 学生信息

    在Java编程语言中,`TreeMap` 是一个有序的键值对集合,它实现了 `SortedMap` 接口。这个数据结构内部基于红黑树(Red-Black Tree)算法实现,保证了插入、删除和查找操作的时间复杂度为 O(log n)。在“java treemap...

    【IT十八掌徐培成】Java基础第12天-03.TreeMap-集合工具类.zip

    在Java编程语言中,集合框架是处理对象组的重要工具,其中`TreeMap`是一个非常关键的类,属于`java.util`包,它实现了`SortedMap`接口,提供了有序的键值对存储。本课程主要围绕`TreeMap`展开,讲解其特性和使用方法...

    557.555.JAVA基础教程_集合-TreeMap两种添加方式的使用(557).rar

    1. put()方法的基本使用:`treeMap.put(key, value)`,将指定的键值对添加到TreeMap中。如果TreeMap中已经存在该键,则原有值会被新值替换。 2. 自然顺序:如果Key是实现了Comparable接口的对象(如String、Integer...

    Java提高篇之TreeMap编程开发技术共24页.pdf

    - `TreeMap`是一个实现了`SortedMap`接口的类,这意味着它能够自动对键进行排序,要么根据自然顺序,要么根据提供的`Comparator`。 - 键必须实现`Comparable`接口,以便进行比较和排序。 2. **插入与删除操作** ...

    TreeMap源码

    2. `java.util.TreeMap.Node` 类:表示红黑树的节点,包含键、值、颜色和子节点等信息。 3. `put()` 方法:插入键值对,包括插入逻辑和红黑树调整。 4. `remove()` 方法:删除键值对,涉及红黑树的重新平衡。 5. `...

    java用treemap统计单词出现的个数

    Java TreeMap是一个有序的Map实现,它可以根据对象的自然顺序或自定义的比较器对键进行排序。在本例中,我们使用TreeMap来统计一个句子或一个段落中单词出现的次数,并按照字母表顺序输出。 知识点1:Java TreeMap...

    java 中 TreeMap排序

    当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一个理想的选择。下面将详细讨论`TreeMap`的排序机制以及如何自定义排序规则。 1. **默认排序** `TreeMap`的默认排序是基于键的自然顺序。如果键是实现了...

    泛型、TreeMap.rar

    Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和重用性。泛型允许我们在定义类、接口和方法时指定一个或多个类型参数,这样我们就可以创建可以处理多种数据类型的通用代码。泛型不仅...

    492.490.JAVA基础教程_常用类-自定义类实现Comparable自然排序(492).rar

    `Comparable`接口位于`java.lang`包中,它只有一个方法`compareTo(T o)`,用于比较当前对象与指定对象的大小关系。 **Comparable接口** `Comparable`接口是为那些需要比较的对象设计的。当你创建一个类,并希望它...

    Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)

    在Java编程中,Map接口是用于存储键值对的数据结构,而Java提供了多种Map的实现,包括TreeMap、HashMap和ConcurrentSkipListMap。本文主要比较了这三种Map的性能,尤其是在插入和查找操作上的效率。 1. **TreeMap**...

    【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip

    在Java编程语言中,`TreeSet`是一个基于`TreeMap`实现的有序集合。它遵循了`SortedSet`接口,因此元素在集合中是按照特定的顺序排列的。本课程重点讲解了`TreeSet`如何实现`Comparable`接口以及如何自定义比较规则。...

    Treemap-4.1.2

    在Treemap-4.1.2.zip这个压缩包中,我们可能找到了一个特定版本的TreeMap库或相关的开发代码,用于创建和管理tree maps。这个版本可能是针对某种特定场景优化或扩展的,比如提供了额外的功能或性能改进。TreeMap-...

    java-jdk源代码免费分享 src.zip

    10. **泛型(Generics)**:Java的泛型是类型安全的一种手段,其在`java.lang.reflect`和`java.util`等包中的实现源码可以帮助理解其类型擦除的过程。 11. **国际化(Internationalization)**:`java.text`和`java...

Global site tag (gtag.js) - Google Analytics