- 浏览: 250170 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (192)
- 技术研究学习 (19)
- 工作总结 (4)
- spring3.x (11)
- mail (2)
- jar (2)
- FCKeditor (1)
- quartz (2)
- json (1)
- jdbc (5)
- struts2 (6)
- java基础 (18)
- jboss (3)
- IT名称解析 (1)
- 测试工具 (2)
- 工作趣谈 (1)
- 数据库 (8)
- js (8)
- jquery (1)
- mysql (20)
- Sql (3)
- Oracle (1)
- easyui (0)
- log4j (1)
- 源码研究 (1)
- Jasper Report (0)
- Jbpm4 (4)
- xml (1)
- ireport (0)
- javavm (1)
- sitemesh (5)
- compass (1)
- jvm (1)
- ext (1)
- lucene (0)
- cxf (1)
- Blazeds (0)
- Resteasy (1)
- jaxb (1)
- tomcat (1)
- Rmi (1)
- BoneCP (1)
- velocity (3)
- OSCache (1)
- EHCache (1)
- 高性能开发 (9)
- 设计模式 (0)
- 网络协议应用 (1)
- Ibatis (1)
- powerdesigner (1)
- 架构师之路 (2)
- memcached (4)
- MapReduce (1)
- 测试组 (1)
- 图像处理 (2)
- LoadRunner (2)
- 报表 (1)
- 负载均衡 (1)
- 分布式 (3)
- c# (1)
- java中一些特殊问题 (3)
- java 8 (1)
- Mogodb (1)
- 项目设计与实现 (2)
- Ubuntu (1)
- eclipse (1)
- gradle (1)
- 私有云 (1)
- redis (1)
- 移动前端 (1)
最新评论
LinkedHashMap和LinkedHashSet是JDK 1.4中引入的两个新的集合类。虽然已经过去5年了,但我敢打赌并不是很多人都用过(因为我就没有用过)。但这两个类在某些情况下还是非常有用的,过去没有用,现在没有用,都没有关系。但还是应该对这两个Collection框架的新成员有所了解,因为也许以后你会到,或者其实你现在就应该要用到。 LinkedHashMap/LinkedHashSet 顾名思义,就是在Hash的实现上添加了Linked的支持。对于HashMap/HashSet的每个节点上通过一个链表串联起来,这样就可以保证确定的顺序。对于希望有常量复杂度的高效存取性能要求,同时有要求排序的情况下,现在可以直接使用LinkedHashMap/Set了。 对于LinkedHashMap还有一点特别注意,LinkedHashMap支持两种排序:插入顺序、访问顺序。前者是指按照插入时的顺序排序,后者是指按照最旧使用到最近使用的顺序。即如果在一个LinkedHashMap中有5个节点,现在的顺序是e1, e2, e3, e4, e5. 如果是使用顺序的话,现在访问了一次e2, 那么e2节点将移至链表的尾部。现在顺序变为:e1, e3, e4, e5, e2. 这会造成严重的性能问题吗?答案当然是否定的。因为在这儿的链表操作是常量级的。这也是LinkedHashMap/Set在这儿比TreeMap/Set性能更高的原因。 同样,LinkedHashMap/Set也不是thread-safe的。如果在多线程下访问,是需要进行外部同步,或者使用\ Collections.synchronizedMap()的方法包装成一个thread-safe的Map/Set。 特别需要注意的是,在使用“访问顺序”时,读取节点操作也是“结构变化”的操作。因为,这会改变元素遍历的顺序。所以,在使用LinkedHashMap的iterator()方法,遍历元素时,如果其它线程有读取操作,也要进行同步。否则,也会抛出同其它fail-fast一样的由于删除或增加操作而引起的CurrentModificationException的例外。 LinkedHashMap,HashMap等
发表评论
-
jdk1.4,jdk1.5和jdk1.6的区别
2013-05-14 18:54 1207来源:http://blog.csdn.net/f ... -
Response.ContentType 详解
2013-03-13 09:45 1353不同的ContentType 会影响客户端所看到的效果.默认的 ... -
JAVA获取本地,远程macAddress
2013-02-27 13:56 981来源:http://www.2cto.com/kf/20110 ... -
java中断点续传
2013-02-22 15:38 1288转载自 http://www.ibm.com/ ... -
nio
2013-02-22 09:39 922来源http://blog.chinaunix.net ... -
使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket
2013-02-19 09:52 2576来源:http://blog.sina.com.cn/s/ ... -
java字符串编码类型获取
2012-10-05 10:11 938原创作品,允许转载,转载时请务必以超链接形式标明文章 ... -
Java网络编程总结
2012-09-29 14:42 0http://www.cnblogs.com/oubo/arc ... -
Java使用JNDI技术获取DataSource对象
2012-09-29 11:28 1222package common; imp ... -
Java并发包探秘 (二) ConcurrentHashMap
2012-09-27 10:49 952Java并发包中有很多精心设计的高并发容器。有Concur ... -
Java并发包探秘 (一) ConcurrentLinkedQueue
2012-09-27 10:47 1129Java并发包中有很多精心设计的高并发容器。有Conc ... -
集合之线程安全
2012-09-27 10:28 990Map map = Collections.synchro ... -
Java栈与堆
2012-08-16 12:26 734Java栈与堆 ----对这两 ... -
Java中对象的六种可触及状态
2012-08-20 14:07 10281. 强可触及 垃圾收集器不会回收强可触及对象占据的空间 ... -
多线程 sleep()和wait()的区别
2012-08-14 10:12 1033接触了一些多线程的东西,还是从java入手吧。 相信看这篇文 ... -
java oop
2012-08-14 10:13 872对象一般都有两个特征:状态和行为 类实质上定义的是一种数据类 ... -
override与overload
2012-08-14 10:12 730重载Overload特点(两必须一可以) public boo ... -
Java中堆栈和内存分配原理
2012-08-13 09:32 786来源:http://uule.iteye.com/blog/1 ...
相关推荐
`Hashtable`不允许null键和null值,并且它的实现方式相对过时,现在通常推荐使用`Collections.synchronizedMap()`将`HashMap`转换为线程安全的版本,或者使用`ConcurrentHashMap`,后者在多线程环境下的性能更好。...
Bitmap>> cache = Collections.synchronizedMap(new LinkedHashMap, SoftReference<Bitmap>>(100, 1.5f, true)); public MemoryCache() { } public Bitmap getBitmap(String url) { SoftReference<Bitmap> bitmapRef...
- **线程非安全**:与`HashMap`一样,`LinkedHashMap`不是线程安全的,因此在多线程环境下,需要使用`Collections.synchronizedMap()`来同步,或者使用`ConcurrentHashMap`代替。 - **空间开销**:相比于`HashMap`...
如果需要同步,可以选择 HashTable 或者使用 Collections 的 synchronizedMap 方法使 HashMap 或者 LinkedHashMap 具有同步的能力。 * 是否需要保持顺序?如果需要保持顺序,可以选择 LinkedHashMap。 * 是否需要...
- **非线程安全**:由于它不是同步的,因此不能直接在多线程环境中使用,除非将其包装到`Collections.synchronizedMap()`中或使用`ConcurrentHashMap`。 - **存储null键和值**:`HashMap`允许一个`null`键和多个`...
此外,HashMap不是线程安全的,如果在多线程环境中使用,需要采取同步措施,如使用Collections.synchronizedMap()或使用ConcurrentHashMap,后者是Java提供的线程安全的Map实现,它的设计考虑了并发性能。...
Collections提供了对Map的常见操作,如`Collections.emptyMap()`返回一个不可修改的空Map,`Collections.synchronizedMap()`返回一个线程安全的Map。特别地,`Collections.unmodifiableMap()`返回一个不可修改的视图...
此外,HashMap是非同步的,如果在多线程环境下使用,需要手动同步或使用`Collections.synchronizedMap()`方法,或者考虑使用ConcurrentHashMap。 2. **Hashtable**:与HashMap相似,但它不允许键或值为null,并且...
- HashMap 是非线程安全的,多线程环境下需要使用 Collections.synchronizedMap() 或 ConcurrentHashMap。 5. **获取当前日期时间** 使用 java.util.Calendar 或 java.time 包中的类,如 Calendar.getInstance() ...
如果需要将`HashMap`变为线程安全,可以使用`Collections.synchronizedMap()`方法,将其转换为同步映射,但这并不等同于`HashTable`,因为同步机制和性能表现不同。 6. **选择使用Hashtable还是HashMap** 当需要...
而如果需要线程安全的HashMap,则可以通过Collections的synchronizedMap方法或者使用ConcurrentHashMap来实现。 HashMap的存储结构基于数组+链表+红黑树的方式实现。在JDK 1.8之前,HashMap仅使用数组和链表结构,...
相比而言,使用Collections.synchronizedMap()或ConcurrentHashMap可以提供更灵活的同步策略。 Comparable接口用于对象的自然排序,对象自身提供比较规则;Comparator接口则用于外部定义排序规则,可以实现多种排序...
如果不需要线程安全,可以使用HashMap,然后在需要时通过`Collections.synchronizedMap()`方法使其变得同步。 【快速失败机制】快速失败是指在多线程环境中,如果一个Iterator正在遍历集合,而其他线程尝试修改这个...
对于需要线程安全的场景,可以使用Collections.synchronizedMap()或ConcurrentHashMap等同步集合。 总的来说,Java集合框架提供了丰富的数据结构选择和高效的实现,理解和掌握其底层原理对于优化代码性能和编写高...
8. **使HashMap同步**:可以使用`Collections.synchronizedMap(hashMap)`将HashMap转换为线程安全的版本,但这只提供了简单的同步,并非线程安全的替代方案,如Hashtable。 9. **选择Hashtable或HashMap**:选择取...
而`HashMap`则不是线程安全的,如果需要在多线程环境下使用,通常需要使用`Collections.synchronizedMap()`来包装。 - **不允许`null`键和`null`值**:与`HashMap`不同,`Hashtable`不允许插入`null`键或`null`值。...
5. **线程安全**:HashMap在JDK7中不是线程安全的,如果在多线程环境下使用,需要额外的同步控制,如使用`Collections.synchronizedMap()`或者使用`ConcurrentHashMap`代替。 6. **null处理**:HashMap允许键为null...
- 使用Collections工具类的synchronized方法将非线程安全集合转换为线程安全。 11. **集合排序** - 对List使用Collections.sort(),对Set使用TreeSet自动排序,或者自定义Comparable接口实现排序。 12. **LRU...