-3
問題:我試圖重寫ArrayList的add方法來記住添加到數組列表的最後三位數字。然後,我要拿這三個值,並找出它們中的最大值。覆蓋ArrayList的add方法<Integer>
看來,我不能得到我的add方法來保存三個元素沒有出界的錯誤。
import java.util.ArrayList;
public class MaxThreeArrayList extends ArrayList<Integer> {
MaxThreeArrayList maxlist = new MaxThreeArrayList();
int third_last = 0;
int second_last = 0;
int last = 0;
@Override public boolean add(Integer o){
if (maxlist.size() == 1){
last = maxlist.get(maxlist.size() - 1);
}
else if (maxlist.size() == 2){
last = maxlist.get(maxlist.size() - 1);
second_last = maxlist.get(maxlist.size() - 2);
}
else if (maxlist.size() >= 3){
last = maxlist.get(maxlist.size() - 1);
second_last = maxlist.get(maxlist.size() - 2);
third_last = maxlist.get(maxlist.size() - 3);
}
return super.add(o);
}
public int getMax(){
int maximum = 0;
if (third_last >= second_last){
if (third_last >= last){
maximum = third_last;
}
}
if (second_last >= third_last){
if (second_last >= last){
maximum = second_last;
}
}
if (last >= second_last){
if (last >= third_last){
maximum = last;
}
}
return maximum;
}
public static void main(String[] args) {
}
}
你可以很容易地做到這一點與一個額外的圓形陣列或甚至堆棧;你可能過度複雜了。 – ChiefTwoPencils
您也可以通過'Collections.max(subList(size() - 3,size()))' – 4castle
獲得最大值您不需要添加任何內容到'maxlist' – VHS