-3
質問:ArrayListのaddメソッドをオーバーライドして、arraylistに最後の3桁を追加しています。私はこれら3つの値をとり、それらの中で最大値を見つけます。ArrayListのaddメソッドをオーバーライドします。<Integer>
私は、範囲外のエラーなしで3つの要素を保存する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