12.List实现类

List实现类的由来:

根据Vector类,ArrayList类,LinkedList类所具有的存储特点以及拥有的方法入手,发现共性就往上抽取.

共同的特点:
  • 允许元素重复的.
  • 会记录先后添加的顺序.

根据他们的特点,我们就可以指定规范
遵循该规范的实现类,无论底层算法如何,都必须保证允许元素重复和保证添加先后顺序,我们给该规范起名为:List
在Java中规范我们使用接口来表示.

区别
  • Vector类:

底层才有数组结构算法,方法都使用了synchronized修饰,线程 安全,但是性能相对于ArrayList较低

  • ArrayList类:

底层才有数组结构算法,方法没有使用synchronized修饰,线程不安全,性能相对于Vector较高

ArrayList已经取代了Vector的地位

//为了保证ArrayList的线程安全
List list = Collection.synchronizedList(new ArrayList(...)));
  • LinkedList类:

底层才有双向链表结构算法,方法没有使用synchronized修饰,线程不安全.

数组结构算法和双向链表结构算法的性能问题:
  • 数组结构算法:

插入和删除操作速度低,查询和更改较快.

  • 链表结构算法:

插入和删除操作速度快,查询和更改较慢.

使用选择

vector类打死不用,即使要用,也选择ArrayList类.

如果删除和插入操作频繁,应该选择LinkedList类.

如果查询操作频繁,应该是用ArrayList类.

在开发中使用ArrayList较多,根据具体的需求环境来做选择.

你可能感兴趣的:(12.List实现类)