集合list的问答

1、list集合是有序的吗?主要有那些list集合

      list是有序可重复的集合。ArrayList、LinkedList是线程不安全的。线程安全的lst有Vector、CopyOnWriteArrayList。

2、ArrayList和LinkedList有什么区别

       ArrayList底层使用的是数组。由于数组结构,也就是顺序链表结构,它逻辑上和物理上都是相邻的。所以可以通过下标查找,随机增删需要移动大量的元素。而LinkedList底层是双向链表结构,是逻辑上相邻,但物理上不相邻,所以它查找元素需要从头开始,因此它的查询比ArrayList慢,而增删并不像ArrayList那样需要移动大量元素,只需要改变节点的指向就可以了。所以LinkedList比ArrayList随机增删快的多。但是也有一些特殊的情况,往最后添加元素ArrayList 和LinkedList的速度差不多。

3 、ArrayList和Vector有啥区别

      ArrayList和Vector最大的区别就是ArrayList是线程不安全的,而Vector基本上每个方法都使用了synchronized修饰,所以它是线程安全的。但是并不推荐在高并发的情况下使用Vector。而是使用CopyOnWriteList。

4、为什么再高并发的情况下使用CopyOnWriteArrayList而不是使用Vector

      Vector的方法基本都使用了同步关键字synchronized修饰,比如在使用get方法,在高并发的情况下,会产生锁竞争,从而会导致高并发下查询速度比较慢。而CopyOnWriteList利用了对象的不变性,在没有写操作之前,由于对象未发生改变,因此不需要加锁,从而提高了读取的性能。但是写操却不是很好,因为写操作 首先加了lock锁,在改变对象时,是先获取对象的一个副本,然后再对象上修改,最后将副本写会。所以在多读少写的时候使用CopyOnWriteArrayList。少读多写的情况下使用Vetor,但是这种情况发生的概率比较小

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值