gpt4 book ai didi

java - Java返回给定索引处的栈元素,而不修改原始Stack

转载 作者:行者123 更新时间:2023-12-01 07:11:26 25 4
gpt4 key购买 nike

好吧,我最近在采访中被问到这个问题,我很好奇。基本上我有一个包含一组特定值的堆栈,我想在函数中传递堆栈对象并返回特定索引处的值。这里的问题是,函数完成后,我需要不修改堆栈;这很棘手,因为 Java 按值传递对象的引用。我很好奇是否有纯粹的java方法可以使用 push(), pop(), peek(), isempty () 和原始数据类型。我反对将元素复制到数组或字符串中。目前我得到的最干净的方法是使用克隆,找到下面的代码:

    import java.util.Stack;


public class helloWorld {

public int getStackElement( Stack<Integer> stack, int index ){
int foundValue=null;//save the value that needs to be returned
int position=0; //counter to match the index
Stack<Integer> altStack = (Stack<Integer>) stack.clone();//the clone of the original stack
while(position<index)
{
System.out.println(altStack.pop());
position++;
}
foundValue=altStack.peek();
return foundValue;
}

public static void main(String args[]){
Stack<Integer> stack = new Stack<Integer>();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
stack.push(50);
stack.push(60);
helloWorld obj= new helloWorld();
System.out.println("value is-"+obj.getStackElement(stack,4));
System.out.println("stack is "+stack);

}

}

我知道克隆也是复制,但这是我要消除的基本缺陷。精简后,我问我是否真的能够传递堆栈的值,而不是传递其引用的值。

提前致谢。

最佳答案

int position =5;

Integer result = stack.get(position);

Java 文档 here

关于java - Java返回给定索引处的栈元素,而不修改原始Stack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13507978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com