List

1、List简介
List是一种线性的数据结构,Java中对List实现主要有Vector、ArrayList、LinkedList、SynchronizedList等。

Vector和ArrayList都是通过数组实现的,优点是适合随机查找和遍历,不适合频繁插入和删除。

Vector支持线程同步,因此访问开销更大。

LinkedList是用链表结构存储数据,适合动态插入和删除,随机访问和遍历速度相对较慢。

SynchronizedList也是线程安全的,但和Vector有区别。Vector所有需要同步的方法都使用同步方法实现,SynchronizedList使用同步代码块实现。SynchronizedList中实现的类并没有都使用synchronized同步代码块。SynchronizedList可以指定锁定的对象,mutex是成员变量。
2、List的基本操作
有必要看一下List都有哪些基本操作,想想看如果自己设计一个List,都需要哪些功能?

public interface List extends Collection {

int size();

boolean isEmpty();

boolean contains(Object o);

Iterator<E> iterator();

Object[] toArray();

boolean add(E e);

boolean remove(Object o);

boolean containsAll(Collection<?> c);

boolean addAll(Collection<? extends E> c);

boolean addAll(int index, Collection<? extends E> c);

boolean removeAll(Collection<?> c);

void clear();

boolean equals(Object o);

int hashCode();

E get(int index);

E set(int index, E element);

void add(int index, E element);

E remove(int index);

int indexOf(Object o);

int lastIndexOf(Object o);

ListIterator<E> listIterator();

ListIterator<E> listIterator(int index);

List<E> subList(int fromIndex, int toIndex);

三、CopyOnWriteArrayList
Copy-On-Write简称COW,其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。

CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。COW是不能保证可见性的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值