Java高级篇 -- List选择及优化

Java高级篇 -- List选择及优化

发表于2年前(2014-05-05 11:42)   阅读( 616) | 评论( 0)  13人收藏此文章, 我要收藏
0
摘要  Java性能优化,List选择及优化

在java编程中,我们常常使用到java自带的集合类List 

以下为几点简单的优化建议: 

1.Vector还是ArrayList 

  Vector有其特有有点,其每个方法都为同步方法【synchronized】,所以是线程安全的,在多线程环境下,若多个进程同时访问受保护资源,用Vector就显得十分简洁,安全。 

  ArrayList为非线程安全的,若不是多线程环境,或多线程环境下资源不需要写、更新,只需要读取,使用,或资源不需要受保护,使用ArrayList就大大提高了效率。 

  线程安全的散列表将本来可以并行处理的任务进行排队,串行处理。 

  同样:Hashtable是线程安全的,HashMap是非线程安全的 

  

2.设置ArrayList初始化容量 

  ArrayList不断增长过程中会自动扩增其空间,这无疑耗费一定的资源,时间。 

  如果已经预料到ArrayList将是一个很大的数组,并且你预料到它将变得异常庞大,可预先设置数组的大小,可以提高添加新元素的速度,并优化性能。 

  原来ArrayList list=new ArrayList(); 

  现在ArrayList list=new ArrayList(); 

      list.ensureCapacity(N); 

  

3.ArrayList与LinkedList 

  二者功能相当,但内部实现的数据结构不同 

  ArrayList通过object[]实现,LinkedList通过链表。 

  由此易得: 

  ArrayList:随机访问,顺序添加效率均高于LinkedList,只要用于变动较小的集合存储 

             对其添加、删除某位置元素,将移动所有后方元素,效率太低 

  LinkedList:在某个位置增删效率较高,用于变动较为频繁的集合存储 

  

4.遍历 

  若List不发生大小变动【循环中无remove,add操作】,即不用每次检测其大小 

  原来: 

  for (int i = 0; i < vector.size (); i++)   

  改为: 

  for (int i = 0,n=list.size (); i < n; i++)   

  不用每次循环都检测其大小,效率将大大提高 

  

5.使用 

  除非十分必要,否则尽量使用java提供的集合,不要自己书写功能类似的方法 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值