Java ArrayList - Wie bekomme ich den Niedrigsten Wert?
Hallo Leute,
Ich habe eine ArrayList die mit Objekten gefüllt ist, ich will aber nur das Objekt mit dem niedrigsten wert "auswählen" wie gehe ich vor?
LG
4 Antworten
Vom Beitragsersteller als hilfreich ausgezeichnet
Ab Java 8 gibt es dazu eine sehr komfortable Funktion: stream().min(...)
Funktioniert z.B. wie folgt: https://pastebin.com/DaF6NsUu
import java.util.*;
public class Minimum {
public static void main(String[] args) {
// Random zum Befüllen der Liste
final Random r = new Random();
// Liste
final List<WrappedValue> values = new ArrayList<>();
// Befüllen der Liste - hier werden 10 Zufallszahlen reingesteckt
for (int i = 0; i < 10; i++) {
values.add(new WrappedValue(r.nextInt(30)));
}
// Die Liste
System.out.println("Liste: " + values.toString());
// Bemerkung: min(...) erwartet einen Comparator
Optional<WrappedValue> min = values.stream().min(Comparator.comparingInt(wrappedValue -> wrappedValue.getValue()));
// Das kleinste Element - Bemerkung: Falls die Liste leer ist, wird ein leerer Optional zurückgegeben,
// es sollte mit ".isPresent()" geprüft werden, ob der Optional leer ist
System.out.println("Niedrigster Wert: " + min.get());
}
}
class WrappedValue { // Die Klasse, die den Wert enthält
private int value;
public WrappedValue(int value) { // Konstruktor
this.value = value;
}
public int getValue() { // Getter
return value;
}
public void setValue(int value) { // Setter
this.value = value;
}
@Override
public String toString() { // damit System.out.println funktioniert
return Integer.toString(value);
}
}
Woher ich das weiß:Berufserfahrung – Software-Entwicklung (Java Enterprise)
Schau mal hier: Find minimum value using a for loop
https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#min-java.util.Collection-
Returns the minimum element of the given collection, according to the natural ordering of its elements. All elements in the collection must implement the Comparable interface. Furthermore, all elements in the collection must be mutually comparable (that is, e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the collection).
Wenn das eine Hausaufgabe ist, sollst du es aber wohl selbst machen. Mit einer Schleife durchiterieren, dabei kleinstes Element merken und ggf. aktualisieren, keine Hexerei.
Außerdem ist die Frage ob du den Wert willst oder den Index.
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren
Du musst die Arraylist sortieren.
Collections.sort(arraylist);
System.out.println(arraylist.get(0));
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
Nicht dass ich den Ansatz falsch finde, aber komfortabler oder lesbarer als ein altmodisches Collections.min() ist das auch nicht.
Streaming ist eine coole Sache, aber ich habe den Eindruck dass es vor lauter Freude manchmal unnötig verwendet wird.