Java 泛型队列2024年9月10日 | 阅读 6 分钟 在计算机编程中,队列是一种基本的数据结构,它以线性顺序存储项,遵循先进先出 (FIFO) 原则。这意味着最先被移除的元素将是第一个被添加的元素。诸如工作调度、事件管理和数据处理之类的应用经常使用队列。Java 集合框架提供了 Queue 接口以及许多其他用于处理对象集合的类和接口。Java 的 Queue 接口的一个主要特性是能够使用泛型,这使得程序员可以创建可以存储任何数据类型元素的队列。 Java 中的泛型队列实现Java Queue 接口扩展了 Collection 接口,并且是 java.util 包的一部分。它指定了插入、删除和修改队列中元素数量的方法。以下是 Java Queue 接口的声明方式: 从上面的代码片段可以看出,Queue 接口使用类型参数 <E> 进行定义,它代表可以存储在队列中的元素类型。这允许开发人员创建一个可以存储整数、字符串或自定义对象等任何数据类型元素的泛型队列。 让我们来看一下 Queue 接口提供的一些方法: add(E e) 和 offer(E e): 使用这些方法将元素添加到队列的末尾。当无法将元素添加到队列时,add() 方法会抛出错误;相反,offer() 方法会返回 false。 remove() 和 poll(): 使用这些方法可以从队列的前面移除并返回元素。poll() 方法在队列为空时返回 null,而 delete() 方法在这种情况下会抛出异常。 element() 和 peek(): 这些方法用于在不移除队列中的元素的情况下,从前面检索它。当队列为空时,element() 方法会抛出异常,而 peek() 方法返回 null。 示例让我们看一些演示 Java 中泛型队列用法的示例程序。 示例 1:整数队列 IntegerQueueExample.java 输出 Elements in the queue: [10, 20, 30] Front element of the queue: 10 Elements in the queue after removal: [20, 30] 在此示例中,我们使用 LinkedList 类对 Queue 接口的实现来建立一个用于存储数字的队列。使用 add() 方法,我们将三个数字添加到队列中。接下来,我们使用 LinkedList 类的 toString() 方法显示队列的元素。然后使用 remove() 函数移除并显示队列的前面元素,然后再次使用 toString() 方法显示剩余的队列元素。 示例 2:字符串队列 StringQueueExample.java 输出 Elements in the queue: [apple, banana, cherry] Front element of the queue: apple Elements in the queue after removal: [banana, cherry] 在此示例中,我们使用 LinkedList 类对 Queue 接口的实现来建立一个用于存储字符串的队列。利用 offer() 方法,我们将三个字符串添加到队列中,然后显示其内容。然后我们使用 poll() 方法移除并显示队列的前面元素,然后显示队列中剩余的元素。 示例 3:自定义对象队列 CustomObjectQueueExample.java 输出 Elements in the queue: [Student [name=John, age=20], Student [name=Alice, age=22], Student [name=Bob, age=21]] Front element of the queue: Student [name=John, age=20] Elements in the queue after removal: [Student [name=Alice, age=22], Student [name=Bob, age=21]] 在此示例中,我们创建了一个用于存储 Student 类自定义对象的队列。我们定义了一个具有 name 和 age 两个属性的 Student 类,并重写了 toString() 方法以提供 Student 对象的自定义字符串表示。我们创建了三个 Student 对象,并使用 add() 方法将它们添加到队列中。然后我们使用 toString() 方法显示队列中的元素。接下来,我们使用 poll() 方法移除并显示队列的前面元素,最后,我们显示移除后队列中的元素。 除了关于泛型队列之外,我们还有: 容量限制:与具有预定大小的 Java 数组不同,通过 Queue 接口和 LinkedList 类创建的泛型队列没有固定容量。根据添加到队列或从队列中移除的元素数量,它们可以动态地扩展或收缩。因此,在管理队列元素方面有更多的自由度,因为无需设置初始大小或担心队列已满。 空元素:Java 的泛型队列允许存在空条目。因此,null 可以作为合法元素添加到队列中,并且将与其他元素一样被处理。但是,在使用空元素时要小心,因为如果处理不当,它们有时会导致代码出现意外行为。 队列实现:除了 LinkedList 类之外,Java 还提供了 ArrayDeque 和 PriorityQueue 类,它们可用于构建通用队列。根据具体用例,这些类具有不同的特性和性能权衡。例如,PriorityQueue 是一个基于优先级的队列,它根据对象的自然顺序或自定义比较器对对象进行排序;而 ArrayDeque 是一个双端队列,可以用作队列和栈。 在本节中,我们讨论了 Java 中泛型队列的概念,它是一种遵循 FIFO(先进先出)原则的常用数据结构。我们探讨了队列的基本操作,包括将元素添加到队列的后端、从队列的前端移除元素以及在不移除的情况下查看前端元素。我们还讨论了如何使用 Queue 接口在 Java 中实现泛型队列,该接口提供了用于处理队列的标准方法集,以及如何使用 LinkedList 类作为 Queue 接口的实现。我们还提供了带有输出的示例程序,以演示 Java 中泛型队列的用法,包括整数队列、字符串队列和自定义对象队列。 下一个主题Java 中从 2 个日期获取总小时数 |
?图像压缩允许我们在不显著影响视觉质量的情况下减小图像文件的大小。有两种压缩类型。首先,我们使用有损压缩来接受降低的图像质量,同时实现更小的文件大小。例如,我们有...
5 分钟阅读
java.nio.charset 的内置方法之一是 replace() 方法。CharsetEncoder 的替换值以字节数组的形式返回。当编码操作遇到无法映射的字符时,Java 的 CharsetEncoder 类的 replacement() 函数会检索编码器当前的替换序列。一个字节数组...
阅读 2 分钟
面向对象编程 (OOP) 的核心思想之一是数据隐藏,即限制对对象功能的访问,只暴露必要的内容。这是一个有助于将数据封装到类中的基本概念,从而提高了代码的可维护性和安全性。数据隐藏,有时也称为...
5 分钟阅读
在 Java 中,数组要么没有元素,要么所有元素都为 null,这种情况称为空数组。可以使用 Java 中的 new 关键字来声明一个空数组。空数组或没有元素的数组是……
阅读 3 分钟
到目前为止,我们一直专注于 Java 中的对象。自 Java 8 以来,函数式编程方面得到了更多的重视。JavaSoft 的人意识到,一切都使用对象变得麻烦,在某些情况下使用函数可能更有效。Lambda 表达式...
阅读 4 分钟
依赖倒置原则 (DIP) 是面向对象编程 (OOP) 的五项 SOLID 原则之一。它是一项指南,通过促进高层模块与低层模块的解耦,帮助编写灵活且可维护的代码。在 Java 编程的上下文中,依赖……
5 分钟阅读
在Java中,包是类、子包和接口的集合。它支持将现有类组织到文件夹结构中,使其更易于查找和使用。更重要的是,它促进了代码的重用。每个包都有自己的名称。类和...
阅读 4 分钟
在 CMD 中使用记事本运行 Java 程序涉及多个步骤。在本节中,我们将学习如何在命令提示符 (CMD) 中使用记事本保存、编译和运行(执行)Java 程序。在运行(执行)Java 程序之前,请确保已在...中安装了 Java。
阅读 3 分钟
? 美国信息交换标准代码(ASCII)的完整形式。它是一种数值表示的字符。Java 使用 Unicode 系统并支持多种语言。为了简洁起见,让我们理解它首先将字符转换为……
阅读 3 分钟
技术日新月异。有时,我们需要定期在服务器上执行作业。在服务器上手动运行作业是一项困难的任务,用户或管理员无法多次完成。为了...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India