gpt4 book ai didi

java - 在通用堆栈类中创建通用堆栈

转载 作者:行者123 更新时间:2023-11-30 08:13:46 25 4
gpt4 key购买 nike

我正在尝试自学一些 Java,但我遇到了一个看似简单但似乎仍未找到解决方案的问题。

我目前拥有的:

接口(interface):

public interface ADTStack<T> {


public boolean isEmpty();


public void push(T element);


public T top() throws IllegalStateException;


public void pop() throws IllegalStateException;
}

类堆栈:

public class Stack<T> implements ADTStack<T> {

private java.util.LinkedList<T> data;



public Stack() {
data = new java.util.LinkedList<T>();
}

@Override
public boolean isEmpty() {
return data.isEmpty();
}

@Override
public void push(T element) {
data.add(0, element);
}

@Override
public T top() throws IllegalStateException {
if (isEmpty()) {
throw new IllegalStateException("Stack is emtpy.");
}
return data.getFirst();
}

@Override
public void pop() throws IllegalStateException {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty.");
}
data.remove(0);
}

好的,这就是我要做的。我正在尝试编写一个方法 equals 来比较两个堆栈。我的想法是使用第三个 Stack 来将两个堆栈都带入比较它们之后的原始状态。

这是我所拥有的:

    Stack supportStack = new Stack();

public boolean equals(ADTStack<T> s){
if (data.isEmpty() != s.isEmpty()){
return false;
}
if (data.isEmpty() && s.isEmpty()){
return true;
}

T element_a = this.top();
T element_b = s.top();


if( (element_a ==null && (element_b !=null) || !element_a.equals(element_b) || element_a != null && element_b == null)){
return false;
}

data.pop();
s.pop();
supportStack.push(element_a);
boolean result = data.equals(s);

while (!supportStack.isEmpty()){
data.push(supportStack.top());
s.push(supportStack.top());
supportStack.pop();
}
return result;
}

我在编译代码时遇到了很多错误,似乎有问题:

Stack supportStack = new Stack();

我真的不知道出了什么问题以及如何解决错误。我创建了一个 runner-class 并尝试了构造函数并且它起作用了,所以我对哪里出了问题感到困惑。

public class Runner {

public static void main(String[] args){
Stack test = new Stack();
test.push(12);
System.out.println(test.top());
}
}

我很乐意接受任何建议或建设性的批评,因为我是在自学,如果有任何不清楚的地方,请随时提出。

最佳答案

Stack supportStack = new Stack();

Stack 被称为 raw type : 就像不使用泛型一样。您需要使用:

Stack<T> supportStack = new Stack<T>();

但是,作为提示:您不需要这样做。你可以这样做:

return this.data.equals( s.data );

关于java - 在通用堆栈类中创建通用堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843085/

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