当前位置: 首页 > news >正文

广州营销网站建设WordPress忘记密码没用

广州营销网站建设,WordPress忘记密码没用,长治制作公司网站的公司,联盟网站做任务我是你爹 LinkedList<> 和 ArrayDeque<> 的区别Queue接口 和 Deque接口区别Queue 的用法Deque 的用法 LinkedList<> 和 ArrayDeque<> 的区别 1. 数据结构实现方式&#xff1a; LinkedList&#xff1a; 基于链表结构&#xff0c;是一个双向链表。每个…

我是你爹

    • `LinkedList<>` 和 `ArrayDeque<>` 的区别
    • Queue接口 和 Deque接口
      • 区别
      • `Queue` 的用法
      • `Deque` 的用法

LinkedList<>ArrayDeque<> 的区别

1. 数据结构实现方式

  • LinkedList
    • 基于链表结构,是一个双向链表
    • 每个元素都是节点,包含值和指向前一个和后一个节点的指针。
  • ArrayDeque
    • 基于动态数组实现,内部维护了一个循环数组
    • 当容量不足时,会重新分配更大的数组并复制元素。

2. 性能差异

  • 插入和删除操作
    • LinkedList:在链表的头部和尾部进行插入和删除的时间复杂度是 (O(1))。但是,链表的中间插入和删除需要遍历,时间复杂度为 (O(n))。
    • ArrayDeque:在队列的头部和尾部进行插入和删除的时间复杂度是 (O(1)),因为它是一个双端队列,但在动态扩展数组容量时会有额外的开销。
  • 随机访问
    • LinkedList:不支持随机访问。要访问中间的某个元素,需要遍历整个链表,时间复杂度为 (O(n))。
    • ArrayDeque:不提供随机访问,但由于其基于数组实现,整体的内存布局更加紧凑,缓存命中率高。

3. 内存开销

  • LinkedList:由于每个节点都有前向和后向指针,因此在存储元素时存在较大的内存开销。
  • ArrayDeque:内存使用效率较高,但当数组扩容时,需要占用更多的内存空间来存储新数组和复制元素。

4. 允许存储 null 元素

  • LinkedList:允许存储 null 值。
  • ArrayDeque:不允许存储 null 值,因为 null 通常用来指示队列为空的状态,避免引起歧义。

5. 使用场景

  • LinkedList:适合需要频繁在链表中间插入或删除的场景,或者需要作为双端链表(如实现 Deque 时)。
  • ArrayDeque:性能一般比 LinkedList 更好,适合用作栈、队列和双端队列。通常 ArrayDeque 被认为是栈和队列的更好的选择,因为它的性能更稳定、效率更高。

QueueDeque 是 Java 中的接口,分别用于定义队列(FIFO)和双端队列(可作为栈或队列)。它们的用法有所不同,下面为你详细介绍 QueueDeque 的常见用法以及它们支持的方法。

Queue接口 和 Deque接口

区别

特性Queue 接口Deque 接口
插入位置只能在尾部插入可以在头部和尾部插入
删除位置只能从头部删除可以从头部和尾部删除
数据结构先进先出(FIFO)支持先进先出(FIFO)和后进先出(LIFO)
常见实现类LinkedListPriorityQueueLinkedListArrayDeque
常用方法add()offer()poll()peek()addFirst()addLast()removeFirst()removeLast()
典型应用场景任务排队消息队列栈实现双端队列缓存机制
  • Queue 主要用于实现简单的先进先出(FIFO)队列,只能在尾部插入、头部移除,适合任务调度和消息处理。
  • Deque 更加灵活,可以在两端进行操作,既可以用作队列,也可以用作栈,适合需要双端操作的场景。

Queue 的用法

Queue 是一个单端队列接口,遵循 先进先出(FIFO) 的原则。常见的实现类包括 LinkedListPriorityQueueQueue 接口主要用于任务排队、消息队列等应用场景。

常见实现

Queue<Integer> queue = new LinkedList<>();
// 或
Queue<Integer> queue = new ArrayDeque<>();

主要方法

  • add(E e):将元素 e 添加到队列尾部,如果队列已满则抛出异常。
  • offer(E e):将元素 e 添加到队列尾部,返回 true 表示成功,false 表示失败。
  • remove():移除并返回队列头部的元素,如果队列为空,则抛出 NoSuchElementException
  • poll():移除并返回队列头部的元素,如果队列为空,则返回 null
  • element():返回队列头部的元素,但不移除,如果队列为空,则抛出 NoSuchElementException
  • peek():返回队列头部的元素,但不移除,如果队列为空,则返回 null

示例代码

Queue<Integer> queue = new LinkedList<>();// 添加元素
queue.add(1);
queue.offer(2);// 获取队列头部元素
System.out.println(queue.peek()); // 输出:1// 移除队列头部元素
System.out.println(queue.poll()); // 输出:1// 获取并移除头部元素
System.out.println(queue.remove()); // 输出:2// 检查队列是否为空
System.out.println(queue.isEmpty()); // 输出:true

使用场景

  • 任务排队:适用于管理任务的执行顺序,确保按顺序进行处理。
  • 消息队列:用于消息的排队和处理。

Deque 的用法

Deque(Double-Ended Queue,双端队列)是一个接口,允许在队列的两端插入和删除元素,支持既作为**队列(FIFO)使用,也可以作为栈(LIFO)**使用。常见的实现类有 LinkedListArrayDeque

常见实现

Deque<Integer> deque = new LinkedList<>();
// 或
Deque<Integer> deque = new ArrayDeque<>();

主要方法

  • 在队首操作

    • addFirst(E e):将元素 e 添加到队列的头部,如果失败则抛出异常。
    • offerFirst(E e):将元素 e 添加到队列的头部,返回 true 表示成功,false 表示失败。
    • removeFirst():移除并返回队列头部的元素,如果队列为空则抛出 NoSuchElementException
    • pollFirst():移除并返回队列头部的元素,如果队列为空则返回 null
    • getFirst():返回队列头部的元素,但不移除,如果队列为空则抛出 NoSuchElementException
    • peekFirst():返回队列头部的元素,但不移除,如果队列为空则返回 null
  • 在队尾操作

    • addLast(E e):将元素 e 添加到队列的尾部,如果失败则抛出异常。
    • offerLast(E e):将元素 e 添加到队列的尾部,返回 true 表示成功,false 表示失败。
    • removeLast():移除并返回队列尾部的元素,如果队列为空则抛出 NoSuchElementException
    • pollLast():移除并返回队列尾部的元素,如果队列为空则返回 null
    • getLast():返回队列尾部的元素,但不移除,如果队列为空则抛出 NoSuchElementException
    • peekLast():返回队列尾部的元素,但不移除,如果队列为空则返回 null

作为栈使用的方法

  • push(E e):将元素 e 压入栈(等同于 addFirst())。
  • pop():移除并返回栈顶元素(等同于 removeFirst())。

示例代码

Deque<Integer> deque = new ArrayDeque<>();// 在头部和尾部插入元素
deque.addFirst(1);   // 头部插入 1
deque.addLast(2);    // 尾部插入 2// 获取头部和尾部元素
System.out.println(deque.getFirst()); // 输出:1
System.out.println(deque.getLast());  // 输出:2// 在头部和尾部移除元素
deque.removeFirst(); // 移除头部元素
deque.removeLast();  // 移除尾部元素// 作为栈使用
deque.push(3);       // 压入栈顶(头部)
System.out.println(deque.pop());  // 弹出栈顶,输出:3

使用场景

  • 双端操作:需要在两端进行插入和删除的场景。
  • 栈和队列Deque 可以既当作栈使用,也可以当作队列使用,灵活性更高。
  • 实现复杂的数据结构:例如支持同时在两端操作的缓存机制、滑动窗口等。
http://www.yayakq.cn/news/574106/

相关文章:

  • 温州网站设计力推亿企帮3秒后自动跳转网页
  • 网站外链发布平台常州网络推广
  • 建站优化洛可可设计公司创始人
  • 个人网站备案出现公司名字怎么办苏州外贸网站建站
  • php网站开发与设计学会wordpress建站
  • 网站建设费用还是网络湘潭建设网站公司
  • 中邦建设工程有限公司官方网站济南品牌网站建设价格
  • 做网站用什么程序好软件开发工具的基本功能
  • 做miui主题网站a963中华室内设计官网
  • 做国外服务器网站吗宁波网站推广
  • 家居网站建设精英深圳网站制作公司兴田德润怎么样
  • 他们怎么做的刷赞网站课件模板下载免费
  • 客户关系管理系统包括如何优化网络环境
  • 国外的做的比较优秀的网站wordpress图片上传失败
  • 织梦做的网站打开慢高水平建设专业网站
  • 网站建设公司怎么推广设计公司营销策略
  • 建设部网站158号文件网站开发工作要求
  • 网站建设基础知识及专业术语网站的注册和登录界面怎么做
  • 产品推广介绍怎么写网站建设及优化 赣icp
  • 成品网站nike源码1688电商网站建设内容
  • 可以自己做图的网站做的网站电脑上跟手机上不一样吗
  • 企业网站建站策划书汽车网站建设公司
  • 机械公司网站源码做淘宝客要有网站吗
  • 西安网站建设聚星互联购买一个域名能建几个网站
  • 邮件服务器是不是网站服务器石家庄高端网站制作
  • 如何写网站开发的分析php网站开发专业
  • 自己建个网站多少钱无锡哪里有建设网站
  • 岳阳建设公司网站免费黄页营销网站
  • seo整站优化解决方案桐庐城乡建设局网站
  • wordpress josn查询网站优化公司的seo做的好