今天在页面使用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
资源分类:Python库 所属语言:Python 资源全名:disk_treemap-1.0.8.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
本次我们关注的是名为"treemap-1.01.tar.gz"的资源,这是一个在PyPI上发布的Python库,专门用于实现Treemap数据可视化。让我们一起深入探讨这个库的核心功能、应用场景以及如何在实际项目中使用。 Treemap是一种...
本资源提供了List对对象中的属性和TreeMap, String>对键值排序,并针对100w条数据排序,对比List和TreeMap, String>排序的效率。个人认为排序效率对比可以相信,但也可能存在不科学之处,还请高手给与指点,多多包涵...
在"vue_echarts_treemap.zip"中,我们可以看到开发者已经为 Vue 2.x 版本的 ECharts 提供了一个关于 TreeMap 的示例。这个示例可能包含了以下关键知识点: 1. **Vue 2.x 基础**:首先,你需要了解 Vue 2.x 的基本...
Java中的`TreeMap`是一个基于红黑树(Red-Black Tree)数据结构的有序映射容器。它维护了键的自然顺序或者根据提供的比较器进行排序。`TreeMap`类继承自`AbstractMap`,实现了`NavigableMap`、`SortedMap`接口,因此...
在Java编程语言中,`TreeMap` 是一个有序的键值对集合,它实现了 `SortedMap` 接口。这个数据结构内部基于红黑树(Red-Black Tree)算法实现,保证了插入、删除和查找操作的时间复杂度为 O(log n)。在“java treemap...
在Java编程语言中,集合框架是处理对象组的重要工具,其中`TreeMap`是一个非常关键的类,属于`java.util`包,它实现了`SortedMap`接口,提供了有序的键值对存储。本课程主要围绕`TreeMap`展开,讲解其特性和使用方法...
1. put()方法的基本使用:`treeMap.put(key, value)`,将指定的键值对添加到TreeMap中。如果TreeMap中已经存在该键,则原有值会被新值替换。 2. 自然顺序:如果Key是实现了Comparable接口的对象(如String、Integer...
- `TreeMap`是一个实现了`SortedMap`接口的类,这意味着它能够自动对键进行排序,要么根据自然顺序,要么根据提供的`Comparator`。 - 键必须实现`Comparable`接口,以便进行比较和排序。 2. **插入与删除操作** ...
2. `java.util.TreeMap.Node` 类:表示红黑树的节点,包含键、值、颜色和子节点等信息。 3. `put()` 方法:插入键值对,包括插入逻辑和红黑树调整。 4. `remove()` 方法:删除键值对,涉及红黑树的重新平衡。 5. `...
Java TreeMap是一个有序的Map实现,它可以根据对象的自然顺序或自定义的比较器对键进行排序。在本例中,我们使用TreeMap来统计一个句子或一个段落中单词出现的次数,并按照字母表顺序输出。 知识点1:Java TreeMap...
当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一个理想的选择。下面将详细讨论`TreeMap`的排序机制以及如何自定义排序规则。 1. **默认排序** `TreeMap`的默认排序是基于键的自然顺序。如果键是实现了...
Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和重用性。泛型允许我们在定义类、接口和方法时指定一个或多个类型参数,这样我们就可以创建可以处理多种数据类型的通用代码。泛型不仅...
`Comparable`接口位于`java.lang`包中,它只有一个方法`compareTo(T o)`,用于比较当前对象与指定对象的大小关系。 **Comparable接口** `Comparable`接口是为那些需要比较的对象设计的。当你创建一个类,并希望它...
在Java编程中,Map接口是用于存储键值对的数据结构,而Java提供了多种Map的实现,包括TreeMap、HashMap和ConcurrentSkipListMap。本文主要比较了这三种Map的性能,尤其是在插入和查找操作上的效率。 1. **TreeMap**...
在Java编程语言中,`TreeSet`是一个基于`TreeMap`实现的有序集合。它遵循了`SortedSet`接口,因此元素在集合中是按照特定的顺序排列的。本课程重点讲解了`TreeSet`如何实现`Comparable`接口以及如何自定义比较规则。...
在Treemap-4.1.2.zip这个压缩包中,我们可能找到了一个特定版本的TreeMap库或相关的开发代码,用于创建和管理tree maps。这个版本可能是针对某种特定场景优化或扩展的,比如提供了额外的功能或性能改进。TreeMap-...
10. **泛型(Generics)**:Java的泛型是类型安全的一种手段,其在`java.lang.reflect`和`java.util`等包中的实现源码可以帮助理解其类型擦除的过程。 11. **国际化(Internationalization)**:`java.text`和`java...