是否可以ArrayList在方法内创建和使用一个?我想在public int min()方法中创建一个临时堆栈来跟踪最小值。但是,编译器抱怨 ArrayListadd()方法: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;}
3 回答
![?](http://img1.sycdn.imooc.com/54584cd10001404b02200220-100-100.jpg)
30秒到达战场
TA贡献1828条经验 获得超6个赞
您不是add
在 的实例上调用方法,Arraylist
而是在MinStack
没有add
方法的类对象的实例上调用它。
您应该调用push
方法,因为它是在您的类中定义的,它将调用add
数组列表的方法。或者method
在MinStack
类中定义/重命名(推送)一个名称add
![?](http://img1.sycdn.imooc.com/545847aa0001063202200220-100-100.jpg)
慕田峪7331174
TA贡献1828条经验 获得超13个赞
您使用了不正确的设计策略来实现此类。他们在你的实现中有很多流程,在这里我不打算谈论这些。在你的设计方法中,而不是push()
在你的类中调用实现的行为调用。您正在尝试调用一个在此类中未实现的方法,称为add()
. 如果你想在类中使用你的实现行为,只需调用你的方法作为smalls.push(elMin)
instated of smalls.add(elMin)
。
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
呼啦一阵风
TA贡献1802条经验 获得超6个赞
我认为你可以这样做:
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;
}
添加回答
举报
0/150
提交
取消