Kleinste Zahl aus Liste

Hallo,
die Frage passt nur in den Anfänger Bereich.
Es gibt eine Liste, in der keiner, einer, mehrere oder alle Elem. 0 sein können. Daraus soll jetzt das kleinste, das aber nicht 0 ist, gewählt werden (Index).
Bisher so:

        int index = -1;
        for (int i = 0; i < alp.size(); i++) {
            if (alp.get(i).l > 0) {
                index = i;
                break;
            }
        }
        if (index == -1) {
            return index;
        }
        for (int i = 0; i < alp.size(); i++) {
            if (alp.get(i).l > 0 && alp.get(i).l < alp.get(index).l) {
                index = i;
            }
        }
        return index;
    }```
Geht das irgendwie eleganter?
     private static int lowest(List<Pro> alp) {
        int index = -1;
        int min = Integer.MAX_VALUE;
        for (int i = 0; i < alp.size(); i++) {
            int value = alp.get(i).l;
            if (value != 0 && value < min) {
                min = value;
                index = i;
            }
        }
        return index;
    }

Dankeschön, das kostete mich einige Gehirnwindungen. Also Index von kleinstes l aus der Liste von Pros, das größer 0 ist, sonst -1.

Integer.MAX_VALUE wollte mir partout nicht erscheinen, weil es quasi wie 0xCAFEBABE eine magische Zahl darstellt. So ist es sogar performanter/schneller.

Damit wäre das Thema gelöst. Ihr fragt euch sicher, was l ist - oder?

*** Edit ***

Wie könnte man auch das vereinfachen:

        int index = -1;
        for (int i = 0; i < alp.size(); i++) {
            if (alp.get(i).l > 0) {
                index = i;
                break;
            }
        }
        if (index == -1) {
            return index;
        }
        for (int i = 0; i < alp.size(); i++) {
            if (alp.get(i).l > 0 && alp.get(i).p > alp.get(index).p) {
                index = i;
            }
        }
        return index;
    }```

ich weiß, das sieht jetzt alles sehr ähnlich aus.

Auf einer Ebene: Eine mieserabelst benannte Variable.
Darüber hinaus: Nein.

Vereinfachen kann man es so, wie Landei schon geschrieben hat. Worauf willst du raus?

Es sind nur Teile eines Programms, damit man das gesamte nicht erkennt.

In erster Ebene wollte ich einfach nur wissen, wie man es besser schreiben kann/könnte. Diese Antwort hab ich ja auch erhalten. Das andere ist mehr so Plaudern, damit ich nicht durchdrehe.^^ (*)

(*): Das war jetzt Ironie, keine Angst/Panik, mir geht’s gut.

---- TOPIC CLOSED ---- (imo)

Aber ist nicht noch ne Fehler, wenn alle Werte != 0 == Integer.MAX_VALUE sind? Dann werden de doch nicht gewählt. :frowning:

Aaaaber hier geht’s so um Werte zw. 0 bis 6 für l.^^

        int index = -1;
        int min = 0;
        for (int i = 0; i < alp.size(); i++) {
            int value = alp.get(i).l;
            if (value != 0 && (index < 0 || value < min)) {
                min = value;
                index = i;
            }
        }
        return index;
    }

Danke für deine Antwort, die gefällt mir. :smiley: (Sry, hab doch gute Laune).