是否可以在方法内创建和使用ArrayList
?我想在public int min()
方法中创建一个临时堆栈以跟踪最小值。但是,编译器抱怨ArrayList add()
方法:Cannot resolve method 'add(int)'
我猜想那是因为我试图在创建ArrayList
的同一方法中运行它?
import java.util.*;
public class MinStack {
private ArrayList<Integer> data;
public MinStack() {
data = new ArrayList<Integer>();
}
public void push( int a ) {
data.add( a );
}
public int pop() {
if ( data.size() <= 0 ) {
throw new IllegalStateException();
}
return data.remove( data.size() - 1 );
}
public int size() {
return data.size();
}
public int min() {
MinStack smalls = new MinStack();
int elMin = (data.get((data.size() - 1)));
smalls.add(elMin);
while (!data.isEmpty()) {
if (data.get(data.size() - 1) < elMin)
elMin = data.get(data.size() - 1);
}
return elMin;
}
答案 0 :(得分:3)
您不是在add
的实例上调用Arraylist
方法,而是在没有MinStack
方法的add
类对象的实例上调用它
您应该调用push
方法,而不是在您的类中定义的方法,该方法将调用arraylist的add
方法。否则在method
类中定义/重命名(推送)MinStack
类中的add
答案 1 :(得分:2)
您使用了不合适的设计策略来实现此类。它们在您的实现中有很多流程,在这里我不再谈论这些。在您的设计方法中,不要在类中调用实现的行为,而是调用push()
。您正在尝试调用在名为add()
的此类中未实现的方法。如果要在类中使用冒犯的行为,只需将您的方法调用为smalls.push(elMin)
的{{1}}。
答案 2 :(得分:1)
smalls.add(elMin)
正在寻找MinStack类的添加方法。您应该调用push方法在数据arrayList中插入elMin。
答案 3 :(得分:1)
我认为您可以按照以下步骤进行操作:
public int min() {
if(data.isEmpty())
throw new RuntimeException("the list is empty...");
int elMin = data.get(0);
for(int i : data) {
if(i < elMin) {
elMin = i;
}
}
return elMin;
}
答案 4 :(得分:0)
尝试一下:
调用push方法将elMin
插入ArrayList data
。