Bestimmte Objekte aus Collections anwählen/herausbekommen

Skyy2010

Mitglied
Hallo,
Ich habe ein Problem bei Collections und bin momentan etwas ratlos. Ich schildere Euch mal das Problem.

Folgendes Beispiel:
Ich habe mehrere Objekte. Alle Objekte sind Instanzen der selben Klasse (z.B. der Klasse Bücher) und haben mehrere Variablen (und Methoden), deren Werte durchaus gleich sein können. Eine Variable jedoch (ID) ist bei allen Objekten unterschiedlich.
Ich habe nun die Objekte erzeugt und in eine Collection gepackt.
Nun möchte ich ein bestimmtest Objekt anhand der ID aus meiner Collection auswählen.

Ist das möglich? Ich würde das dann gerne so aussehen lassen, dass ich eine Methode habe, ihr die ID als Integer übergebe und die Methode mir dann das passende Objekt liefert.

Wenn es möglich ist, welche Collection(s) Klasse brauche ich da und wo bzw. unter welchen Stichpunkten kann ich mehr Informationen finden?

Ich hoffe ihr könnt mir weiterhelfen, würde mich sehr freuen.
Lg und vielen Dank!
 
Hangel dich doch einfach mit ner Schleife durch die Collection, die erweiterte for-Schleife ist nen guter Kandidat, und vergleich dann jeweils die ID mit der gesuchten ID. Wenn die IDs passen gibst du das Objekt zurück.
Willst du ohne die Schleife auskommen willst dann musst du deine Objekte in eine Map<Integer, Buch> packen.

Die Methode kann etwa so aussehen:
Java:
public Buch findById(int id) {
  for (Buch b : buecher) {
    if (b.getID() == id) {
      return b;
    }
  }
}
 
Selbstverständlich ist sowas möglich.
Du gehts die Collection durch und überprüfst bis du das Object findest.

kleines Beispiel:
Code:
public class Book {
	private int id;
	private String title;
	
	public Book(int id, String title){
		this.id = id;
		this.title = title;
	}
	
	public int getID(){
		return id;
	}
}

Code:
import java.util.List;
import java.util.Vector;
public class main {
	List<Book> books = new Vector<Book>();
	
	public Book getBookById(int id){
		for(Book b : books){
			if(b.getID() == id){
				return b;
			}
		}
		return null;
	}
}
Ich denke mal das geht in die Richtung dessen was du suchst.
Wie du siehst brauchen tut man nichts zusätzliches.
 
Vielen, vielen, vielen, vielen, vielen Dank!
Ihr habt mir echt sehr geholfen. Hab meinen Fehler erkannt, wie immer total trivial. Bei der Methode
Java:
 public static Klasse getObjekt (String ID, Collection<Klasse> col) {
		for (Klasse x: col) {
			if (x.getID() == ID) {
				return x;
			}
		}
	return null;
	}

habe ich das <Klasse> hinter Collection in der Parameterliste vergessen und deswegen gab es den Fehler: "Type mismatch: cannot convert from element type Object to Klasse" und ich hab mir dort wirklich seit 4 Stunden den Kopf drüber zerbrochen!!

Also nochmal ein dickes Dankeschön an crackm für die ausführliche Antwort und auch ein dickes Dankeschön an EikeB für den Tipp mit den Maps, das kannte ich noch nicht!
 
Zuletzt bearbeitet:
In deiner Methode übergibst du ID aber nutzt den Parameter gar nicht, solltest du dir vielleicht nochmal anschauen ob das so passt 😉
 
Hat eingetlich EikeB in seinem erstem Beitrag erwähnt.
Aber eigentlich haben beide Möglichkeiten ihre Vorteile, ich würde deshalb eigentlich nicht pauschalisieren.
 

Zurück
Oben