当前位置:   article > 正文

java中ArrayList、LinkedList和Vector的区别_int[],linkedlist,vector都是实现了list接口

int[],linkedlist,vector都是实现了list接口

ArrayList、LinkedList和Vector都是实现了List接口。

其中,ArrayList和Vector底层是用数组实现的,因此可以用序号下标来访问他们,查找的效率高,一般数组的大小比要插入的数据大数量要大。

LinkedList的底层使用双向链表实现的,因此插入和删除的效率高。


多线程并发的时候,ArrayList和LinkedList是非线程安全的,并且是不同步的。Vector的所有方法都用了synchronized方法,是线程安全的,但是vector中的方法组合起来使用不是线程安全的。

例如:

Vector vector = new Vector();

public void put(String element){

if (!vector.contains(element)) 
    vector.add(element); 
}

.....

}

我们是要实现在插入后,vector中没有重复的元素。


上面的代码中,虽然contains()和add()都是线程安全的,但是假如有两个线程a,b都要执行add(“”);在a执行了contains后还没有执行add方法,这时线程b执行了contains方法,b发现此时vector中没有重复的元素。因此vector中就会插入了重复的元素了,与我们要实现的功能不一致。因此,我们在组合使用vector中的方法的时候,还是要根据具体情况加上synchronized。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/322068?site
推荐阅读
相关标签
  

闽ICP备14008679号