Java从入门到放弃 · List接口的实现类

205 阅读3分钟

“这是我参与8月更文挑战的第24天,活动详情查看: 8月更文挑战

前言

上一篇(传送门)我们讲了List集合以及List集合的一些常用方法,本篇我们就来一起学习List集合的实现类,分别是ArrayList集合、LinkedList集合和Vector集合。

List接口的实现类

ArrayList集合

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

java.util.ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。

许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。

ArrayList集合底层原理

使用ArrayList集合增加元素时,实际上是数组的复制,每增加一个元素就把原来的数组进行复制,新数组长度加一,这就是为什么ArrayList集合增删元素比较慢的原因。

因此在使用时,我们要确定集合的使用情况,如果增删比较多就避免使用ArrayList集合。

LinkedList集合

List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。

注意,此实现不是同步的。

LinkedList集合底层是链表结构,特点是:查询慢,增删快。

实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。这些方法我们作为了解即可:

  • public void addFirst(E e):将指定元素插入此列表的开头。
  • public void addLast(E e):将指定元素添加到此列表的结尾。
  • public.E getFirst():返回此列表的第一个元素。
  • public E getLast():返回此列表的最后一个元素。
  • public E removeFirst():移除并返回此列表的第一个元素。
  • public E removeLast():移除并返回此列表的最后一个元素。
  • public E pop():从此列表所表示的堆栈处弹出一个元素。
  • public void push(E e):将元素推入此列表所表示的堆栈。
  • public boolean isEmpty(:如果列表不包含元素,则返回true。

LinkedList是List的子类,List中的方法LinkedList都是可以使用,这里就不做详细介绍,我们只需要了解LinkedList的特有方法即可。在开发时,LinkedList集合也可以作为堆栈,队列的结构使用。(了解即可)

Vector集合

Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。

Vector集合和ArrayList的区别就是Vector集合是同步的,因此速度比较慢,慢慢的已经被ArrayList集合所取代。大家了解即可。

写在最后

好了,以上就是List集合的一些实现类,到此关于List集合我们就一起学习到这里了。明天我们来接着学习Set接口。

以上内容如有不正之处,欢迎掘友们批评指正!