Datentypen "Liste" eigener Objekte durchsuchen

ganzegal111

Mitglied
Hallo zusammen,

für mein Projekt brauche ich eine Liste oder ähnliches in der meine eigenen Objekte sind, welche ich gerne durchsuchen können möchte.

Mein Objekt ist zum Beispiel:
Java:
public class Route {
	private final int id;
	private final String Name;
	private String color;

	public Route(int id, String name) {
		super();
		this.id = id;
		Name = name;
	}

}

Getter und Setter habe ich jetzt mal nicht mit eingeblendet.

Ich suche jetzt eine Möglichkeit eine Liste von "Routen" zu erstellen die ich sowohl nach Name als auch nach id oder sogar color durchsuchen kann.

Wie würdet ihr das realisieren?

Vielen Dank
 
Java:
import java.util.*;
public class Route {
    private final int id;
    private final String Name;
    private String color;
    private ArrayList<Route> liste  = new ArrayList<Route>();

    public Route(int id, String name) {
        super();
        this.id = id;
        Name = name;
    }
    
    public void hinzufuegen(Route r){
      liste.add(r);
    }
    // weitere Methoden..

}
 
Man könnte z. B. eine Utility-Klasse einsetzen:
Java:
public class Route {
    private final int id;
    private final String Name;
    private String color;
 
    public Route(int id, String name) {
        super();
        this.id = id;
        Name = name;
    }
}

public class RouteListUtils {

	public static List<Route> getByColor(List<Route> routes, String color) {
		List<Route> result = new ArrayList<Route>
		for (Route r: routes) {
			if (r.getColor().equals(color)) {
				result.add(r);
			}
		}
		return result;
	}

	/* Andere Methoden dementsprechend mit anderen Attributen. */
}

// in irgendeiner Klasse:
List<Route> routen = // von irgendwoher
// ...
List<Route> roteRouten = RouteListUtils.getByColor(routen, "rot");
Oder man könnte eine eigene Liste erstellen (z. B. von ArrayList abgeleitet), die entsprechende Methoden anbietet. Oder halt an jeder Stelle selbst über die Liste iterieren und die entsprechenden Attribute vergleichen. Gibt sicherlich noch sehr viel mehr Möglichkeiten, aber mehr (sinnvolle) fallen mir gerade nicht ein.
 
Danke euch, für die schnellen Antworten.

Die Ideen sind gut, aber ich frage mich, ob es noch etwas performanteres gibt. Ich habe vor mehrere tausend Einträge so für eine Routenalgorithmus damit durchsuchen zu lassen. Gibt es da etwas schnelleres, oder meint ihr man kann damit eine ausreichende Performanz erzeugen? Aber eine Liste einfach Stück für Stück durchgehen, kann ja nicht wirklich schnell sein, bei so vielen Einträgen.
Sortieren ist auch schwierig, da ich ja nach verschiedenen Einträgen der Klassen suche.

Jemand ne gute Idee?
 
Setze es doch erstmal mit "einfach durchlaufen" um. Dann wirst du genau sehen wie lange es dauert etc. Aber ohne sortieren und auch als eine Liste gespeichert wirst du nicht viel performanteres finden.
 
Danke,

werde es jetzt als Liste umsetzen, wobei die einzelnen Elemente auf andere Elemente verweisen. Das macht zumindest einige Anfragen überflüssig.

Gruß
 

Zurück
Oben