java 散列表和线程安全

本文探讨了Java中散列表类的选择及ArrayList与LinkedList的性能特点。分析了不同场景下选择线程安全或非线程安全散列表类的影响,以及初始化ArrayList容量的方法。同时介绍了如何根据应用场景选择合适的列表类型以提升性能。

java优化编程-散列表类:

线程安全的散列表类:
java.util.Vector/java.util.Hashtable
非线程安全的散列表类:
java.util.ArrayList/java.util.HashMap
在需要做线程同步以及要求线程安全的场合,开发人员应尽量使用线程安全的散列表类;
在不需要线程安全的场合,为了提高系统性能,开发人员应尽量选用非线程安全的散列表类;
因为线程安全的散列表会将原本可以并行处理的多线程进行排队,将转化为串行处理,从而导致系统性能下降。

ArrayList类可以通过下列方法标识成线程安全的类:
List list = Collections.synchronizedList(new ArrayList());

 

-----------------------------------------

java优化编程-ArrayList与LinkedList:

ArrayList(数组对象)与LinkedList(链表对象)是java中的两个专门用来处理数据元素列表的类。
这两个类在性能特性方面存在较大差别,差别源于它们不同的存储结构。
ArrayList是通过内部数据结构Object[]实现的;
而LinkedList是通过将一系列的内部记录连接在一起实现的。
它们性能的差异使它们拥有各自不同的适用场合。
当需要在某个位置添加一个新元素时,应该使用LinkedList来提高系统性能。
因为当在ArrayList的某个位置添加一个新元素时,系统会把此位置之后的所有元素向后推移,这个动作相当耗时。
而在LinkedList的某个位置添加一个新元素时,系统只需给此新元素添加一个与相邻对象的引用连接,这个动作相当廉价。
ArrayList适用在查找某个已存在元素的场合。
--------------------------------------------------------

java优化编程-瞬间值:

在做远程方法调用(RMI)应用开发时,将传递对象中不需要的属性标记为“瞬间值”,使其不被传递,来节约网络开销,
提高传输速度,提高系统性能,并且还可以节约调用端运行环境的内存资源。

----------------------------------------------------------------------------------------

设置ArrayList初始化容量: 

如果有一个很大的数组,并且你已经预料到此数组会变的异常庞大,那么这里给出一个方法用来提高添加新元素的速度,做好初始化操作。
调用ArrayList对象中的ensureCapacity(int size)方法;

============================================

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值