复制堆栈和队列,而无需使用克隆。 例如,当我调用传递堆栈的方法时,我无法修改保留传递原始堆栈的权限。 我需要对传递的堆栈进行复制/克隆以更改/在方法中使用。

我只能使用Stack.java(附加)。 我创建了以下辅助方法:

public static Stack qToS(Queue q) {

Stack s = new Stack();

while (!q.isEmpty()) {

CalendarDate n = q.remove();

s.push(n);

}

return s; // Return stack s

}

public static Queue sToQ(Stack s) {

Queue q = new LinkedList();

while (!s.empty()) {

CalendarDate n = s.pop();

q.add(n);

}

return q; // Return queue q

}

/*

Provided as a Stack Class alternative

Limits user to actual Stack methods

so Vector is not available

*/

public class Stack {

// avoid blanked import of java.util

private java.util.Stack secret;

// default constructor

public Stack() {

secret = new java.util.Stack();

}

// empty that collection

public void clear() {

secret.clear();

}

// should be order constant

public int size() {

return secret.size();

}

// simply have push call push from API

public E push(E a) {

secret.push(a);

return a;

}

// And, empty calls empty from API

public boolean empty() {

return secret.empty();

}

// And my pop() uses pop() form JAVA API

public E pop() {

return secret.pop();

}

// My peek uses their peek

public E peek() {

return secret.peek();

}

// Following are not basic Stack operations

// but needed to do some simple testing

// toString is probably not O(constant)

public String toString() {

return secret.toString();

}

}

我的解决方案

public static Stack sToS(Stack orgin) {

// Create a temp stack

Stack temp = new Stack();

// Move all values from origin

// stack to temp stack using pop and push

while (!orgin.empty()) {

CalendarDate n = orgin.pop();

temp.push(n); // push here for the same order

}

// Create a copy stack

Stack copy = new Stack();

// Move all values from temp stack to

// both origin and copy stacks at the same time

while (!temp.empty()) {

CalendarDate n = temp.pop();

copy.push(n); // push here for the same order

orgin.push(n);

}

return copy;

}

java 队列复制_java - 复制堆栈或队列,而无需使用“克隆” - 堆栈内存溢出相关推荐

  1. java环形数组_Java数组模拟环形队列

    1.假溢出 ​系统作为队列用的存储区还没有满,但队列却发生了溢出,我们把这种现象称为"假溢出". 因为队列遵从从队尾存入数据,从队头取数据,所以红框部分的空间就不能继续存入新的数据 ...

  2. java 线程阻止_Java:在特定队列大小后阻止提交的ExecutorService

    我也做了同样的事情. 诀窍是创build一个BlockingQueue,其中offer()方法实际上是一个put(). (你可以使用任何基础BlockingQueue impl你想要的). publi ...

  3. java 二进制文件拷贝_Java复制二进制文件

    常用方法使用高效缓冲字节流 ? BufferedInputStream和BufferedOutputStream ? import java.io.*; public class BufferCopy ...

  4. java 图片有损压缩_java - 用有损jpeg压缩多页tiff图像 - 堆栈内存溢出

    将图像从16位减少到8位. 假设您有一个byte []变量plane16,在其中您有图像的所有像素. 注意 :我的byte [] plane16从16位图像获取数据,但是byte为8bit = 1by ...

  5. java卡安全域_java – 在安全管理器下解析许多域后,程序内存不足?

    我有一个服务,要解析的域名来自不受信任的来源.最近,它因内存不足而崩溃.我缩小了可能的原因,并得出结论,它必须与最近的DNS请求流量有关.但是,该服务在解析域名后不存储任何内容,因此这似乎不太可能,但 ...

  6. java 时间戳最大值_Java中在时间戳计算的过程中遇到的数据溢出问题解决

    背景 今天在跑定时任务的过程中,发现有一个任务在设置数据的查询时间范围异常,出现了开始时间戳比结束时间戳大的奇怪现象,计算时间戳的代码大致如下. package com.lingyejun.authe ...

  7. java ppt转图片 内存溢出_Java虚拟机内存及内存溢出异常

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进来,墙里面的人却想出来. 不知道其他人想出来没,反正我是没想出来,为什么这个JVM的运行时内存要这样设计?. 以下内容 ...

  8. java远程桌面图片压缩问题_java用Socket实现的远程桌面浏览 内存溢出问题

    用socket做长连接时,出现了内存溢出的错误.搞了4天的时间总算是搞定了. 现总结下: 1.socket一般分为短连接和长连接. 长连接是一旦一个客户端登陆上服务器,其与服务器之间的连接就不关闭,不 ...

  9. java异常体系_JAVA异常体系结构详解

    一.什么是异常 异常:程序在运行过程中发生由于硬件设备问题.软件设计错误等导致的程序异常事件.(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象.      --百 ...

最新文章

  1. JavaScript之面向对象学习三原型语法升级
  2. 隐马尔可夫(HMM)
  3. computed set 自定义参数_深入理解vmodel之自定义组件用法
  4. java 带宽控制_如何使用Java netty正确限制带宽使用?
  5. 端口映射原理,公网,内网,NA
  6. JVM Class 类加载机制(系列号3)
  7. 滑动转向机器人轮间距校准
  8. Angular 响应式表单 patchValue和setValue
  9. 知乎在线部分的技术架构
  10. linux之SQL语句简明教程---CONCATENATE
  11. mysql管理工具_15款最佳的MySQL管理工具和应用程序
  12. IDEA安装插件IDE Eval Reset
  13. 一句话点评国内在产主流A级车
  14. OA系统的集成与整合:打破信息孤岛,实现企业信息化融会贯通
  15. 使用Cronjobs的综合指南
  16. SDUT OJ 多项式求和
  17. linux qemu-nbd介绍
  18. 二、Linux镜像软件的安装
  19. 平顶山学院微信缴学费使用说明
  20. 学习自旋电子学的笔记01:微磁模拟软件OOMMF的教程(中文版)17-17.3章

热门文章

  1. ccform 单据打印的规则调整与新增功能发布说明
  2. 红旗桌面版本最新运用要领和结果解答100例-3
  3. Visual C++位图操作
  4. C++静态成员和非静态成员的区别 及修饰
  5. IOS15的抽屉效果
  6. IOS15瀑布流的使用
  7. OpencvSharp的踩坑之路
  8. SQL注入——基于联合查询的字符型GET注入(三)
  9. 硬盘安装以及磁盘分区和检测(笔记本R7000)
  10. java session事件,Java开发网 - 再论Session事件的捕获