将无序Map准换为有序的TreeMap
来源:互联网 发布:mac wps 编辑:程序博客网 时间:2024/06/06 17:00
HashMap和TreeMap
1.AbstractMap抽象类和SortedMap接口
AbstractMap抽象类:覆盖了equals()和hashCode()方法以确保两个相等映射返回相同的哈希码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。映射的哈希码是映射元素哈希码的总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的哈希码。
SortedMap接口:它用来保持键的有序顺序。SortedMap接口为映像的视图(子集),包括两个端点提供了访问方法。除了排序是作用于映射的键以外,处理SortedMap和处理SortedSet一样。添加到SortedMap实现类的元素必须实现Comparable接口,否则您必须给它的构造函数提供一个Comparator接口的实现。TreeMap类是它的唯一一份实现。
2.两种常规Map实现(分别继承自AbstractMap和SortedMap)
HashMap:基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()],为了优化HashMap空间的使用,您可以调优初始容量和负载因子。
(1)HashMap(): 构建一个空的哈希映像
(2)HashMap(Map m): 构建一个哈希映像,并且添加映像m的所有映射
(3)HashMap(int initialCapacity): 构建一个拥有特定容量的空的哈希映像
(4)HashMap(int initialCapacity, float loadFactor): 构建一个拥有特定容量和加载因子的空的哈希映像
TreeMap:基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。
(1)TreeMap():构建一个空的映像树
(2)TreeMap(Map m): 构建一个映像树,并且添加映像m中所有元素
(3)TreeMap(Comparator c): 构建一个映像树,并且使用特定的比较器对关键字进行排序
(4)TreeMap(SortedMap s): 构建一个映像树,添加映像树s中所有映射,并且使用与有序映像s相同的比较器排序
3.两种常规Map性能
HashMap:适用于在Map中插入、删除和定位元素。
Treemap:适用于按自然顺序或自定义顺序遍历键(key)。
4.总结:HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap。
5.从Map中取值
1.声明一个map: Map map = new HashMap();
2.向map中放值,注意:map是key-value的形式存放的.如:
map.put(”sa”,”dd”);
3.从map中取值:String str = map.get(”sa”).toString();结果是:str = ”dd”;
4.遍历一个map,从中取得key 和value
JDK1.5
Map m = new HashMap();
for (Object o : map.keySet()) {
map.get(o);
}
JDK1.4
Map map = new HashMap() ;
Iterator it = map.entrySet().iterator() ;
while (it.hasNext())
{
Map.Entry entry = (Map.Entry) it.next() ;
Object key = entry.getKey() ;
Object value = entry.getValue() ;
}
但是我们有的时候是需要有序的Map这个时候,我们就必须用TreeMap,在TreeMap里有TreeMap(Map m)这个构造方法,就是给我们带来里便利,只需要将无序的Map作为参数即可。
- 将无序Map准换为有序的TreeMap
- 将两个无序数组合并为有序链表
- 【Java集合框架】Map与Set的有序与无序
- Map的有序实现类和无序实现类
- 改无序单链表为有序
- 广播--的有序和无序
- 将列的Name换为Comment
- java工具类之将map范型集合转化为list的有序集合工具类
- 新的排队spin_lock--有序和无序
- Android的有序无序BroadCast,ResultReceiver详解
- 有序广播和无序广播的区别
- html的有序列表与无序列表
- 修改无序或有序的样式风格
- 【转载】java集合的有序和无序
- List(有序排放)、Map(以名和值一一对应的存放)、Set(既无序也没名)
- 17-5:LinkedHashSet有序且为链表,HashSet无序
- Treemap 有序的hashmap。用于排序
- TreeMap的有序设计及实现
- PHP 二维数组排序
- jekyll项目开发
- UITableViewCell动态计算高度
- 后台配置前台风格
- RMQ-ST模板
- 将无序Map准换为有序的TreeMap
- ubuntu 海思SDK安装
- 坑爹的WinInet函数之HttpOpenRequest HttpSendRequest
- Linux安装Node.js(源码编译安装)
- Android中Google Drive显示黑屏问题分析
- 获取未安装apk文件信息
- 河内塔, 平面上的直线和约瑟夫问题的公式列表和出处
- 第13周多态性与虚函数程序阅读
- 文章标题