Java LinkedList使用方法教程及示例代码

Java的LinkedList是一种常用的数据容器,与ArrayList相比,LinkedList的增删操作效率更高,而查改操作效率较低。本文主要介绍Java LinkedList使用方法及示例代码。

1、Java LinkedList

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

例如:

//导入 LinkedList类
import java.util.LinkedList;

public class Main {
  public static void main(String[] args) {
    LinkedList langs = new LinkedList();
    langs.add("c");
    langs.add("java");
    langs.add("python");
    langs.add("cjavapy");
    System.out.println(langs);
  }
}

2、ArrayList和LinkedList的区别

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

LinkedList类具有与ArrayList类相同的所有方法,因为它们都实现了List接口。

但是,虽然可以以相同的方式使用ArrayList类和LinkedList类,但是它们的构建方式却大不相同。

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

1) ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;

2) 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;

3) 对于添加和删除操作add和remove,一般情况下LinkedList要比ArrayList快,因为ArrayList要移动数据。一般首选用ArrayList,由于LinkedList可以实现栈、队列以及双端队列等数据结构,所以当特定需要时候,使用LinkedList。

3、LinkedList 方法

在许多情况下,ArrayList效率更高,因为通常需要访问列表中的某一个元素,但是LinkedList提供了几种方法来更有效地执行某些操作:

方法

描述

public boolean add(E e)

链表末尾添加元素,返回是否成功,

成功为 true,失败为 false。

public void add(int index, E element)

向指定位置插入元素。

public boolean addAll(Collection

c)

将一个集合的所有元素添加到链表后面,

返回是否成功,成功为 true,失败为 false。

public boolean addAll(int index, Collection c)

将一个集合的所有元素添加到链表的指定位置后面,

返回是否成功,成功为 true,失败为 false。

public void addFirst(E e)

元素添加到头部。

public void addLast(E e)

元素添加到尾部。

public boolean offer(E e)

向链表末尾添加元素,

返回是否成功,成功为 true,失败为 false。

public boolean offerFirst(E e)

头部插入元素,返回是否成功,成功为 true,失败为 false。

public boolean offerLast(E e)

尾部插入元素,返回是否成功,成功为 true,失败为 false。

public void clear()

清空链表。

public E removeFirst()

删除并返回第一个元素。

public E removeLast()

删除并返回最后一个元素。

public boolean remove(Object o)

删除某一元素,返回是否成功,成功为 true,失败为 false。

public E remove(int index)

删除指定位置的元素。

public E poll()

删除并返回第一个元素。

public E remove()

删除并返回第一个元素。

public boolean contains(Object o)

判断是否含有某一元素。

public E get(int index)

返回指定位置的元素。

public E getFirst()

返回第一个元素。

public E getLast()

返回最后一个元素。

public int indexOf(Object o)

查找指定元素从前往后第一次出现的索引。

public int lastIndexOf(Object o)

查找指定元素最后一次出现的索引。

public E peek()

返回第一个元素。

public E element()

返回第一个元素。

public E peekFirst()

返回头部元素。

public E peekLast()

返回尾部元素。

public E set(int index, E element)

设置指定位置的元素。

public Object clone()

克隆该列表。

public Iterator descendingIterator()

返回倒序迭代器。

public int size()

返回链表元素个数。

public ListIterator listIterator(int index)

返回从指定位置开始到末尾的迭代器。

public Object[] toArray()

返回一个由链表元素组成的数组。

public T[] toArray(T[] a)

返回一个由链表元素转换类型而成的数组。

4、循环遍历LinkedList中的元素

使用 for 配合 size() 方法来迭代列表中的元素:

// 引入 LinkedList 类
import java.util.LinkedList;
public class JavaTest {
    public static void main(String[] args) {
        LinkedList<String> langs = new LinkedList<String>();
        langs.add("c");
        langs.add("java");
        langs.add("python");
        langs.add("cjavapy");
        for (int size = langs.size(), i = 0; i < size; i++) {
            System.out.println(langs.get(i));
        }
    }
}

注意:size() 方法用于计算链表的大小。

也可以使用 for-each 来迭代元素:

// 引入 LinkedList 类
import java.util.LinkedList;
public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> langs = new LinkedList<String>();
        langs.add("c");
        langs.add("java");
        langs.add("python");
        langs.add("cjavapy");
        for (String i : langs) {
            System.out.println(i);
        }
    }
}

推荐阅读
cjavapy编程之路首页