Map的性能

HashMap    Map基于散列表的实现(它取代了Hashtable)。插入和查询"键值对"的开销是固定的。可以通过构造器设置容量和负载因子,以调整容器的性能

LinkedHashMap  类似HashMap,但是迭代遍历它时,取得"键值对"的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;

        而在迭代访问时反而更快,因为它使用链表维护内部次序

TreeMap       基于红黑树实现。查看"键"或"键值对"时,它们会被排序(次序由Comparable或Compatator决定)。TreeMap的特点在于,所得到的结果是经过排序的。

        TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。

WeakHashMap  弱键(week key)映射,允许释放所指向的对象;这是为解决某类特殊问题而设计的。如果映射之外没有引用指向某个"键",则此"键"可以被垃圾收集器回收

ConcurrentHashMap 一种线程安全的Map,它不涉及同步加锁。我们将在"并发"一章中讨论

IdentityHashMap  使用==代替equals()对"键"进行比较的散列映射。专为解决特殊问题而设计

时间: 2024-08-07 02:32:47

Map的性能的相关文章

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

比较Java原生的 3种Map的效率. 1.  TreeMap 2.  HashMap 3.  ConcurrentSkipListMap 结果: 模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下: Map类型 插入 查找(在100W数据量中)   10W 50W 100W 150W 0-1W 0-25W 0-50W Concurrent SkipListMap 62 ms 227 ms 433 ms 689ms 7 ms 80 ms 119 ms HashMap

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

问题 比较Java原生的 1.  TreeMap 2.  HashMap 3.  ConcurrentSkipListMap 3种Map的效率. 结果 模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下: Map类型 插入 查找(在100W数据量中)   10W 50W 100W 150W 0-1W 0-25W 0-50W ConcurrentSkipListMap 62 ms 227 ms 433 ms 689ms 7 ms 80 ms 119 ms HashMap

c++性能之map实现性能比较

http://www.cnblogs.com/zhjh256/p/6346501.html讲述了基本的map操作,在测试的时候,发现map的性能极为低下,与java相比相差了接近200倍.测试的逻辑如下: // map定义 map<int, FirstCPPCls*> mapStudent; for (i=0;i<10000;i++) { FirstCPPCls clz; clz.setAppVersion("12.32.33"); clz.setClusterNam

(转)list 、set 、map 粗浅性能对比分析

本文分开介绍了List.Map.Set: (测试环境:win7.jdk.4G.i3:文章示例为了节省篇幅,只会列出测试大体形式和遍历次数) 第一部分:List 1.add(E e) ==============================性能测试================================= (1)表格统计的差异在于new的方式不同: [java] view plaincopy for (int i = 0; i < 10000; i++) { List<Integer

Java多线程 -- Map容器性能比较

单线程 单线程环境下可以使用HashMap和TreeMap.TreeMap上遍历返回结果是按照Key排序的. 测试方法 记录写入Map中N条记录的时间,单位毫秒. 记录从N条记录的Map中读取10W条记录的时间,单位毫秒. N=25W,50W,75W,100W 测试结果 写N条记录 25W  50W  75W  100W HashMap 28 49 72 92 TreeMap 131 321 527 748 N条记录中读10W数据 25W  50W  75W  100W HashMap 4 5

map遍历性能记录

map遍历可以通过keySet或者entrySet方式. 性能上:entrySet略胜一筹,原因是keySet获取到key后再根据key去获取value,在查一遍,所以慢一些. keySet: //先获取map集合的所有键的Set集合 Set<String> keySet = map.keySet(); //有了Set集合,就可以获取其迭代器 Iterator<String> it = keySet.iterator(); while (it.hasNext()) { String

从头认识java-15.7 Map(2)-介绍HashMap的工作原理-put方法

这一章节我们来介绍HashMap的工作原理. 1.HashMap的工作原理图 下图引用自:http://www.admin10000.com/document/3322.html 2.HashMap初始化的时候我们可以这样理解:一个数组,每一个位置存储的是一个链表,链表里面的每一个元素才是我们记录的元素 3.下面我们来看put的源码: public V put(K key, V value) { if (key == null) return putForNullKey(value); int

泛型Binary Search Tree实现,And和STL map比较的经营业绩

问题叙述性说明: 1.binary search tree它是一种二进制树的.对于key值.比当前节点左孩子少大于右子. 2.binary search tree不是自平衡树.所以,当插入数据不是非常随机时候,性能会接近O(N).N是树中节点数目; 3.理想状态下.时间复杂度是O(lgN), N是树中节点的数目: 4.以下给出一个简单的实现,并比較其和STL map的性能.一样的操作,大约耗时为STL map 的2/3. 代码例如以下: #ifndef _BINARY_SEARCH_TREE_H

《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记

造成开销的操作包括: 1. 线程之间的协调(例如:锁.触发信号以及内存同步等) 2. 增加的上下文切换 3. 线程的创建和销毁 4. 线程的调度 一.对性能的思考 1 性能与可伸缩性 运行速度涉及以下两个指标: 某个指定的任务单元需要"多快"才能处理完成.计算资源一定的情况下,能完成"多少"工作. 可伸缩性: 当增加计算资源时(例如:CPU.内存.存储容器或I/O带宽),程序的吞吐量或者处理能力能相应地增加. 2 评估各种性能权衡因素 避免不成熟的优化.首先使程序正