在Java中,为什么Stack是一个具体类,而Queue是一个接口?

2024-03-16

Queue 的哪一个子类是“普通”队列?


(1) java.util.Stack 是 Java 1.0 的遗留类。它早于 Collections 框架很多年,坦率地说,它是一个例子horrible多方面的设计。一切都不是事情应有的样子。主要问题是Stack延伸Vector,并且由于Java中的所有继承都是公共继承,因此所有方法Vector可以在Stack以及。因此,您可以检查堆栈中的任何位置,从中间添加和删除元素,清除它,或者执行不属于堆栈抽象一部分的任何其他操作,没有演员表。与使用Queue or Deque接口,只有适合堆栈的方法才可用。

(2) 确实不存在普通队列这样的东西,但 LinkedList 实现了 Queue,没有任何特殊语义,所以也许这就是您想要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Java中,为什么Stack是一个具体类,而Queue是一个接口? 的相关文章

  • C# 中静态结构存储在哪里?

    From 这个问题 https stackoverflow com questions 2565331 fields of class are they stored in the stack or heap我明白 结构可以在堆栈或寄存器中
  • html 堆栈顺序

    考虑以下代码
  • 帮助尝试理解圆形数组中的模运算

    我有一个小问题试图弄清楚模运算是如何计算的 我正在建立一个队列 所以我有一个圆形数组 我无法弄清楚这个模运算是如何工作的 给定 q 一个 5 个元素长度的字符数组 MAX 常量给出数组的最大长度 5 rare 是一个 int 代表数组 q
  • 可观察队列?

    是否有人编写了实现 INotifyCollectionChanged 的 Net 通用队列版本 或者是否已经在 Net 框架深处隐藏了某个版本 快速搜索没有显示任何结果 但接口很简单 扩展 Queue 类并添加对该接口的支持几乎是微不足道的
  • 如何使用 PHPmailer 构建电子邮件队列?

    在插入表后 我已经使用 PHPmailer 构建了一个电子邮件脚本 但是 由于脚本超时 我收到了错误的网关 502 发送 300 多封电子邮件来响应网络请求对我来说听起来不是一个好主意 所以我的问题是如何构建一个在后台发送电子邮件的队列 据
  • 使用 Tensorflow 对象检测 api 打乱训练数据集

    我正在使用 Faster RCNN 模型和 Tensorflow 对象检测 API 来开发徽标检测算法 我的数据集按字母顺序排列 因此有一百个阿迪达斯徽标 然后是一百个苹果徽标等 我希望在训练时对其进行洗牌 我在配置文件中添加了一些值 tr
  • 在堆栈上增长数组

    这本质上是我的问题 在函数的生命周期中 我生成一些整数 然后在也是同一函数一部分的算法中使用整数数组 整数数组仅在函数内使用 因此将数组存储在堆栈上自然是有意义的 问题是在生成所有整数之前我不知道数组的大小 我知道如何在堆栈上分配固定大小和
  • 具有动态数量的并行消费者的 Kafka 工作队列

    我想用Kafka来 分工 我想将工作实例发布到某个主题 并运行由相同使用者组成的云来处理它们 当每个消费者完成其工作时 它将从该主题中提取下一个工作 每项工作只能由一个消费者处理一次 处理工作非常昂贵 因此我需要在许多机器上运行许多消费者才
  • 在Java中,为什么Stack是一个具体类,而Queue是一个接口?

    Queue 的哪一个子类是 普通 队列 1 java util Stack 是 Java 1 0 的遗留类 它早于 Collections 框架很多年 坦率地说 它是一个例子horrible多方面的设计 一切都不是事情应有的样子 主要问题是
  • 如果堆栈在数字较低的地址处增长,为什么指针比较会颠倒这一点?

    由于堆栈向下增长 即朝着数值较小的内存地址增长 为什么 i lt j是真的 如果我错了 请纠正我 但我想这是 C 创建者 C 维护的 的设计决定 但我想知道为什么 同样奇怪的是 堆分配的对象pin位于比堆栈变量在数值上更高的内存地址 这也与
  • 增加 Windows 上的堆栈大小 (GCC)

    有没有办法在使用 GCC 编译 链接时增加 Windows 应用程序的堆栈大小 IIRC 在 GCC 中 您可以向 ld 提供 stack bytes 参数 E g gcc Wl stack 16777216 o file exe file
  • 什么是 C/C++ 数据段和堆栈大小?

    我读到这取决于编译器和操作系统架构 如何在使用 GCC 作为编译器的 Linux 系统上找到数据段和堆栈最大大小 让我和你一起实验一下 创建文件 test c 如下所示 int main void return 0 现在编译它 指定最大堆栈
  • iOS 如何以编程方式检测顶视图控制器何时弹出?

    假设我有一个带有 2 个视图控制器的导航控制器堆栈 VC2 位于顶部 VC1 位于底部 我可以在 VC1 中包含一些代码来检测 VC2 刚刚从堆栈中弹出吗 由于我试图从 VC1 的代码中检测 VC2 的弹出 似乎类似视图将出现 or 查看是
  • 使用 Celery 创建动态队列

    这是我的场景 当用户登录我的网站时 我会为给定用户排队一堆任务 通常每个任务需要 100 毫秒 每个用户有 100 多个任务 这些任务排队到默认的 Celery 队列中 并且我有数百个工作线程正在运行 当任务在后端完成时 我使用 webso
  • 为什么堆上的内存分配比堆栈上的内存分配慢得多?

    我已经被告知很多次了 但我不知道为什么 从堆分配内存时会涉及哪些额外成本 与硬件有关吗 与CPU周期有关吗 这么多的猜测 但没有确切的答案 有人能给我一些详细说明吗 正如 unwind 所说 Heap数据结构比Stack更复杂 在我看来 当
  • 修改栈上的返回地址

    我研究了缓冲区溢出漏洞的基础知识 并尝试了解堆栈是如何工作的 为此 我想编写一个简单的程序 将返回地址的地址更改为某个值 有人可以帮助我计算基指针的大小以获得第一个参数的偏移量吗 void foo void char ret char pt
  • 使用javascript对堆栈元素进行排序

    我试图理解使用递归对堆栈元素进行排序http www geeksforgeeks org sort a stack using recursion http www geeksforgeeks org sort a stack using
  • 如何在java中排队并调用实际方法(而不是立即评估)?

    有一个对时间敏感的任务列表 但在这种情况下 时间 对于另一个程序告诉我的内容是任意的 它更像是 滴答声 而不是时间 但是 我不希望立即评估所述方法 我希望一个在另一个完成后执行 我在队列中使用链表 但我不确定如何 是否可以访问类中的实际方法
  • 队列对象只能通过继承在进程之间共享

    我有两个 python 类 它们共享一个基类 可以说它定义了一个 multiprocessing Queue 每个类都将在单独的子进程上启动 并且需要通过队列共享信息 现在 如果基类定义了一个队列 那么每个子类对象将实例化它自己的队列 从而
  • 使用java工具的类似Sidekiq的队列?

    我想要一个工作队列 其行为几乎与 ruby 的 sidekiq 完全相同 它不need使用 Redis 但它可以 我只是不能使用 ruby 甚至不能使用 Jruby 基本上 我希望能够创建使用某些参数运行的作业 并且工作池执行作业 工作人员

随机推荐