Frage: Ich versuche, die Add-Methode von Arraylist zu überschreiben, die letzten drei Ziffern hinzugefügt, um die Arraylist zu erinnern. Ich soll dann diese drei Werte nehmen und den maximalen Wert unter ihnen finden.Aufschalten die Add-Methode für Arraylist <Integer>
Es scheint, dass ich nicht meine Methode add die drei Elemente ohne außerhalb der Grenzen Fehler speichern bekommen kann.
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) {
}
}
Sie können dies mit einem zusätzlichen kreisförmigen Array oder sogar einem Stapel tun; Vermutlich überkomplizierst du es. – ChiefTwoPencils
Sie können auch das Maximum mit 'Collections.max (subList (size() - 3, size()) bekommen' ' – 4castle
Sie fügen nichts zur maxlist hinzu – VHS