您当前的位置: 首页 >  数据结构与算法

命运之手

暂无认证

  • 2浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【数据结构与算法】【09】LinkedList API 详解

命运之手 发布时间:2022-05-28 15:55:36 ,浏览量:2

JDK中和栈、队列相关的类

在这里插入图片描述 在这里插入图片描述

JDK中提供了若干和栈、队列相关的类或接口,主要有如下几个

  • List,JDK自带的线性表接口,Java中几乎所有的线性表结构,都实现了List接口
  • Vector,Vector相当于一个线程安全的ArrayList,在它的基础上,控制元素的插入删除位置,就能实现栈和队列的功能
  • Stack,继承自Vector,是JDK自带的栈类型
  • Queue,JDK自带的队列类型,但只是一个接口
  • Deque,JDK自带的双向队列类型,也是一个接口,双向队列本身的结构决定了,它既能当栈使用,也能当队列使用
  • LinkedList,Deque双向队列实现类。这是一个非常强大的类,它既能当双向链表用,又能当双向队列用,还能当作栈来用,JDK建议使用LinkedList作为栈,而不是Stack类

由于LinkedList的功能特别强大,同时实现了很多接口,所以它的方法特别多

其中很多方法,功能有相似之处,但细节上有区别,所以有必要逐个理清

LinkedList API 详解

作为Collection使用时,它的方法有

  • boolean add(E e),向集合中添加一个新元素,成功则返回true。当Collection不允许插入空元素时,强行插入抛出非法参数异常。当Collection容量已满时,强行插入抛出非法状态异常。当Collection不允许插入重复元素时,强行插入返回false
  • boolean remove(Object o),移除首个相同的元素,有匹配元素被移除返回true,否则返回false。当Collection不允许空元素时,强行传入null抛出空指针异常

作为List使用时,它的方法有

  • E remove(int index),移除指定位置的元素,存在则返回被删除的元素,否则抛出下标越界异常
  • E get(int index),获取指定位置的元素,存在则返回该元素,否则抛出下标越界异常
  • E set(int index, E element),替换指定位置的元素,存在则返回被替换的元素,否则抛出下标越界异常

作为Queue使用时,它的方法有

  • boolean add(E e),向队尾添加元素,如果队列已满,抛出非法状态异常
  • boolean offer(E e),向队尾添加元素,如果队列已满,则返回false
  • E remove(),移除队首元素,返回被移除的元素,如果队列为空,则抛出元素不存在异常
  • E poll(),移除队首元素,返回被移除的元素,如果队列为空,则返回null
  • E element(),获取队首元素,如果队列为空,则抛出元素不存在异常
  • E peek(),获取队首元素,如果队列为空,则返回null

由于Deque同时具备双向队列+双向栈+双向链表的功能,所以我们将其接口分为几部分来讲解

作为Stack(Deque)使用时,它的方法有

  • void push(E e),向栈顶添加元素
  • E pop(),移除栈顶元素,返回被移除的元素,如果栈为空,则返回null

作为双向链表(Deque)使用时,它的方法有

  • void addFirst(E e),向链表头部添加元素,不允许添加时抛出异常
  • void addLast(E e),向链表尾部添加元素,不允许添加时抛出异常
  • boolean offerFirst(E e),向链表头部添加元素,不允许添加时返回false
  • boolean offerLast(E e),向链表尾部添加元素,不允许添加时返回false
  • E removeFirst(),删除链表头部元素,返回移除元素,链表为空时抛出异常
  • E removeLast(),删除链表尾部元素,返回移除元素,链表为空时抛出异常
  • E pollFirst(),删除链表头部元素,返回移除元素,链表为空时返回null
  • E pollLast(),删除链表尾部元素,返回移除元素,链表为空时返回null
  • E getFirst(),获取链表头部元素,链表为空时抛出异常
  • E getLast(),获取链表尾部元素,链表为空时抛出异常
  • E peekFirst(),获取链表头部元素,链表为空时返回null
  • E peekLast(),获取链表尾部元素,链表为空时返回null

这下大家应该明白了,为什么LinkedList会有那么多方法了吧

因为它实现了多个接口,同时扮演了多个角色

我们只需要理解每个方法属于哪个接口,每个接口有哪些功能,问题就自然迎刃而解了

LinkedList几乎包含了所有线性表的功能,如果想简单阅读下List源码,这个是最好的参考对象

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0730s