Java集合框架之:LinkedList的常见方法使用

✨前言✨
本篇文章主要介绍Java LinkedList的使用方法教程及示例代码

🍒欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁
🍒博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

@

🍎一,简介概述

  • LinkedList实现了List接口和Deque接口.
  • 可以看作顺序容器,队列(Queue)和栈(Stack).
  • 队列和栈首选ArrayDeque(当作栈,比Stack快;当作队列,比LinkedList快).
  • 首尾添加或删除元素是常数时间(O(1)),和下标有关的操作为线性时间(O(n)).
  • 为了提高效率,没有使用synchronized,非线程安全.
  • 需要线程安全可以采用:Collections.synchronizedList(new LinkedList<>())对其进行包装.

  Java的LinkedList是一种常用的数据容器,与ArrayList相比,LinkedList的增删操作效率更高,而查改操作效率较低。

  特点:随机访问慢、插入删除速度快


实现

  • 使用双向链表实现.
  • 链表的每个节点使用内部类Node表示.
  • 通过first和last分别指向链表的第一个和最后一个元素.

🍎二,常见方法以代码演示

1,创建方法表

返回值 方法名 描述
boolean add(E o) 将指定元素追加到此列表的结尾。
void add(int index, E element) 在此列表中指定的位置插入指定的元素。
boolean addAll(Collection<? extends E> c) 追加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。
void addFirst(E o) 将给定元素插入此列表的开头。
void addLast(E o) 将给定元素追加到此列表的结尾。
E get(int index) 返回此列表中指定位置处的元素。
E getFirst() 返回此列表的第一个元素。
E getLast() 返回此列表的最后一个元素。
E set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。
E remove() 找到并移除此列表的头(第一个元素)。
E remove(int index) 移除此列表中指定位置处的元素。
E removeFirst() 移除并返回此列表的第一个元素。
E removeLast() 移除并返回此列表的最后一个元素。
int size() 返回此列表的元素数。
void clear() 从此列表中移除所有元素。
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果列表中不包含此元素,则返回 -1。
int lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引,如果列表中不包含此元素,则返回 -1。
Object[] toArray() 以正确顺序返回包含此列表中所有元素的数组。
... ... ... ... ... ...

2,Java LinkedList

  LinkedList类与ArrayList 几乎相同 ,也是集合List的实现类,相比ArrayList,其使用场景并不多,但有些时候也能用到。

例如:
创建一个名为lisk的LinkedList对象,该对象将存储字符串:

import java.util.LinkedList; // import the LinkedList class

LinkedList lists = new LinkedList();// 创建 LinkedList对象

泛型:

不指定泛型的容器可以放置任何类型的元素,但是指定泛型的容器只能放置指定类型的元素(以及其子类元素)

import java.util.LinkedList; // import the LinkedList class

LinkedList<String> lists = new LinkedList<String>();// 创建 LinkedList对象


3、ArrayList和LinkedList的区别

  LinkedList类是一个集合,可以包含许多相同类型的对象,就像ArrayList一样。

  LinkedList类具有与ArrayList类相同的所有方法,因为它们都实现了List接口。但是,虽然可以以相同的方式使用ArrayList类和LinkedList类,但是它们的构建方式却大不相同。

  ArrayList和LinkedList的区别有以下几点:

  • ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;
  • 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;
  • 对于添加和删除操作add和remove,一般情况下LinkedList要比ArrayList快,因为ArrayList要移动数据。一般首选用ArrayList,由于LinkedList可以实现栈、队列以及双端队列等数据结构,所以当特定需要时候,使用LinkedList。

4,向LinkedList添加元素

要将元素添加到LinkedList,需要使用 add()方法

LinkedList lists = new LinkedList();
//在末尾添加元素
lists.add("C");
lists.add("Python");
//将指定的值 添加到集合的指定 下标位置
lists.add(0,"Java");
lists.add(1,"Mysql");

5,访问LinkedList中元素

要访问LinkedList中的元素,请使用 get() 方法并引用索引号:

//获取第一个元素(最早添加的元素)
System.out.println(lists.getFirst());
//获取最后一个元素(最晚添加的元素)
System.out.println(lists.getLast());
//获取指定位置上的元素
System.out.println(lists.get(2));
//输出为
Java
Python
C

注意: 数组索引以0开头:[0]是第一个元素。 [1]是第二个元素,依此类推。


6,修改LinkedList中元素

要修改元素,需要使用 set() 方法并引用索引号:

lists.set(0,"C#");
System.out.println(lists.get(0));
//输出为
C#

7,删除LinkedList中元素

要删除元素,需要使用 remove() 方法并引用索引号:

//删除指定位置上的元素.
lists.remove(0);
//删除首次出现的指定元素.(从前向后查找)
lists.remove("Python");
//删除第一个元素.(非null)
lists.removeFirst();
//删除最后一个元素.(非null)
lists.removeLast();

8,LinkedList size

要找出LinkedList 有多少个元素,需要使用 size 方法:

lists.size()

🍎三,遍历

1,for循环遍历

 //直接输出
for (int i = 0; i < lists.size(); i++) {
    System.out.println(lists.get(i));
}

//输出为
Java
Mysql
C
Python

2,增强foreach循环遍历

//直接输出
for (Object values: lists) {
    System.out.println(values);
}

//输出为
Java
Mysql
C
Python

3,迭代器遍历

//建立一个迭代器,并且将List中的元素放进迭代器中
Iterator it = lists.listIterator();
//迭代器的头指针是空的
while (it.hasNext()){
      //每次next,指针都会指向下一个元素
      Object values = it.next();
      System.out.println(values);
}

//输出为	
Java
Mysql
C
Python

✨最后✨

总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!
如有问题,欢迎评论区批评指正😁

posted @ 2023-11-29 17:11  于山上之明月  阅读(83)  评论(0编辑  收藏  举报