Java LinkedList

164 阅读1分钟

前言

  之所以想到写一下Java中的LinkedList,是因为今天做的一道题目:

剑指Offer 06.从尾到头打印链表

  题目本身比较简单,利用栈先进后出的特性,从头遍历链表存入栈,再依次pop就可以得到结果。在题解中,并未使用Java的Stack类,而是使用了LinkedList来实现栈的功能。

  Stack 基于数组实现,LinkedList基于链表实现,数组随机访问效率高,但随机插入、随机删除效率低,链表与之相反。那么对于这道题,有频繁的插入、删除操作,那么利用LinkedList实现栈自然比Stack快多了。

  于是就用这篇文章记录一下LinkedList相关的知识,未来可能会进一步进行补充。

LinkedList

  与LinkedList类似的还有ArrayList,以后应该会整理。与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。

构造方法

import java.util.LinkedList;
class Solution {
    public int[] reversePrint(ListNode head) {
        LinkedList<Integer> stack = new LinkedList<Integer>();
}

常用方法

添加元素

public boolean add(E e) //链表末尾添加元素,返回是否成功;
public void add(int index, E element) //向指定位置插入元素;
public void addFirst(E e) //在头部添加元素;
public void addLast(E e) //在尾部添加元素;

删除元素

public void clear() //清空链表;
public E removeFirst() //删除并返回第一个元素;
public E removeLast() //删除并返回最后一个元素;
public boolean remove(Object o) //删除某一元素,返回是否成功;
public E remove(int index) //删除指定位置的元素;
public E poll() //删除并返回第一个元素;
public E remove() //删除并返回第一个元素;