-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