当前位置: 首页 > 面试题库 >

如何使用Java复制堆栈?

董庆
2023-03-14
问题内容

我有一个堆栈A,我想创建一个与堆栈A相同的堆栈B。​​我不希望堆栈B只是指向A的指针-
我实际上是想创建一个包含相同元素的新堆栈B堆栈A的顺序与堆栈A相同。堆栈A是字符串的堆栈。

谢谢!


问题答案:

只需使用Stack类的clone()方法(它实现Cloneable)。

这是一个使用JUnit的简单测试用例:

@Test   
public void test()
{
    Stack<Integer> intStack = new Stack<Integer>();
    for(int i = 0; i < 100; i++)        
    {
        intStack.push(i);
    }

    Stack<Integer> copiedStack = (Stack<Integer>)intStack.clone();

    for(int i = 0; i < 100; i++)            
    {
        Assert.assertEquals(intStack.pop(), copiedStack.pop());
    }
}

编辑:

tmsimont:这会为我创建“未经检查或不安全的操作”警告。有什么办法做到这一点而不会产生此问题?

我最初回答说警告是不可避免的,但实际上使用<?>(通配符)-typing 是可以避免的:

@Test
public void test()
{
    Stack<Integer> intStack = new Stack<Integer>();
    for(int i = 0; i < 100; i++)
    {
        intStack.push(i);
    }

    //No warning
    Stack<?> copiedStack = (Stack<?>)intStack.clone();

    for(int i = 0; i < 100; i++)
    {
        Integer value = (Integer)copiedStack.pop(); //Won't cause a warning, no matter to which type you cast (String, Float...), but will throw ClassCastException at runtime if the type is wrong
        Assert.assertEquals(intStack.pop(), value);
    }
}

基本上,我想说的是您仍在从?(未知类型)到进行未经检查的强制转换Integer,但是没有警告。就个人而言,我还是更喜欢直接投射Stack<Integer>并使用禁止显示警告@SuppressWarnings("unchecked")



 类似资料:
  • 我知道Java通过扩展Vector搞砸了栈实现。默认情况下,矢量是同步的。阅读java文档,它说要创建一个堆栈, 因为我对java比较陌生。我的问题是:这是在Java中定义堆栈的最佳实践吗?

  • 问题内容: 嗨,我正在尝试使用另一个空堆栈反转堆栈(我自己编写了一个堆栈)。由于某种原因,它无法正常工作。谁能帮我这个 ? 问题答案: while(!stack1.isEmpty()){ Integer value = (Integer)stack1.pop(); System.out.println(value); reverse.push(value); }

  • 问题内容: 我正在寻找复制Pinterest.com的div布局,特别是如何调整列数以适应浏览器调整大小的更多/更少,并且垂直堆叠不取决于相邻列的高度。源代码显示每个div都是绝对位置。一位联合创始人回答了Quora的一篇文章,指出这是使用自定义jQuery和CSS完成的。我希望结果从左到右排序。您可以提供任何使自己动手的方向,将不胜感激。 问题答案: 您也可以在jQuery Plug-in Ma

  • 我有一个Java控制台应用程序,它使用DOM处理大的xml文件,基本上它从数据库中获取的数据创建xml文件。现在,正如你所猜测的那样,它使用了大量的内存,但令我惊讶的是,它与糟糕的代码无关,而是与“Java堆空间没有缩小”有关。我尝试使用这些JVM参数从Eclipse运行我的应用程序: 我甚至添加了 正如您所看到的,我的应用程序在某一点上占用了约400 MB的堆空间,堆增长到约650 MB,但几秒

  • 问题内容: 此代码有什么问题。BufferedReader和Writer类可以实现吗?我知道如何使用InputStream和OutputStream制作图像的副本,所以不要粘贴使用它的解决方案! 问题答案: 此代码有什么问题。 您正在使用基于文本的类来存储二进制数据。 BufferedReader和Writer类可以吗? 不,当您处理二进制数据时,不会。 我知道如何使用InputStream和Ou

  • 问题内容: 在问题和答案,用户经常发布一个例子,他们的提问/回答与工作: 能够将其放入我的Python解释器中真的很有用,这样我就可以开始调试问题或测试答案了。 我怎样才能做到这一点? 问题答案: 熊猫是由真正了解人们想要做什么的人撰写的。 从版本开始,就有一个功能在使这个“正常工作”方面异常有效。 在开始的问题中复制并粘贴部分代码(即DataFrame),然后在Python解释器中执行以下操作: