在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提供的集合,不要本身书写功能相似的方法