java 队列复制_java - 复制堆栈或队列,而无需使用“克隆” - 堆栈内存溢出
复制堆栈和队列,而无需使用克隆。 例如,当我调用传递堆栈的方法时,我无法修改保留传递原始堆栈的权限。 我需要对传递的堆栈进行复制/克隆以更改/在方法中使用。
我只能使用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 - 复制堆栈或队列,而无需使用“克隆” - 堆栈内存溢出相关推荐
- java环形数组_Java数组模拟环形队列
1.假溢出 系统作为队列用的存储区还没有满,但队列却发生了溢出,我们把这种现象称为"假溢出". 因为队列遵从从队尾存入数据,从队头取数据,所以红框部分的空间就不能继续存入新的数据 ...
- java 线程阻止_Java:在特定队列大小后阻止提交的ExecutorService
我也做了同样的事情. 诀窍是创build一个BlockingQueue,其中offer()方法实际上是一个put(). (你可以使用任何基础BlockingQueue impl你想要的). publi ...
- java 二进制文件拷贝_Java复制二进制文件
常用方法使用高效缓冲字节流 ? BufferedInputStream和BufferedOutputStream ? import java.io.*; public class BufferCopy ...
- java 图片有损压缩_java - 用有损jpeg压缩多页tiff图像 - 堆栈内存溢出
将图像从16位减少到8位. 假设您有一个byte []变量plane16,在其中您有图像的所有像素. 注意 :我的byte [] plane16从16位图像获取数据,但是byte为8bit = 1by ...
- java卡安全域_java – 在安全管理器下解析许多域后,程序内存不足?
我有一个服务,要解析的域名来自不受信任的来源.最近,它因内存不足而崩溃.我缩小了可能的原因,并得出结论,它必须与最近的DNS请求流量有关.但是,该服务在解析域名后不存储任何内容,因此这似乎不太可能,但 ...
- java 时间戳最大值_Java中在时间戳计算的过程中遇到的数据溢出问题解决
背景 今天在跑定时任务的过程中,发现有一个任务在设置数据的查询时间范围异常,出现了开始时间戳比结束时间戳大的奇怪现象,计算时间戳的代码大致如下. package com.lingyejun.authe ...
- java ppt转图片 内存溢出_Java虚拟机内存及内存溢出异常
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进来,墙里面的人却想出来. 不知道其他人想出来没,反正我是没想出来,为什么这个JVM的运行时内存要这样设计?. 以下内容 ...
- java远程桌面图片压缩问题_java用Socket实现的远程桌面浏览 内存溢出问题
用socket做长连接时,出现了内存溢出的错误.搞了4天的时间总算是搞定了. 现总结下: 1.socket一般分为短连接和长连接. 长连接是一旦一个客户端登陆上服务器,其与服务器之间的连接就不关闭,不 ...
- java异常体系_JAVA异常体系结构详解
一.什么是异常 异常:程序在运行过程中发生由于硬件设备问题.软件设计错误等导致的程序异常事件.(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象. --百 ...
最新文章
- JavaScript之面向对象学习三原型语法升级
- 隐马尔可夫(HMM)
- computed set 自定义参数_深入理解vmodel之自定义组件用法
- java 带宽控制_如何使用Java netty正确限制带宽使用?
- 端口映射原理,公网,内网,NA
- JVM Class 类加载机制(系列号3)
- 滑动转向机器人轮间距校准
- Angular 响应式表单 patchValue和setValue
- 知乎在线部分的技术架构
- linux之SQL语句简明教程---CONCATENATE
- mysql管理工具_15款最佳的MySQL管理工具和应用程序
- IDEA安装插件IDE Eval Reset
- 一句话点评国内在产主流A级车
- OA系统的集成与整合:打破信息孤岛,实现企业信息化融会贯通
- 使用Cronjobs的综合指南
- SDUT OJ 多项式求和
- linux qemu-nbd介绍
- 二、Linux镜像软件的安装
- 平顶山学院微信缴学费使用说明
- 学习自旋电子学的笔记01:微磁模拟软件OOMMF的教程(中文版)17-17.3章