Vector durchsuchen!

soa

Erfahrenes Mitglied
Hallo zusammen,

habe einen Vector mit Objekten, die sich aus Name und einer Nummer zusammensetzen.

Jetzt brauche ich eine Methode, die danach sucht, ob ein Name im Vector enthalten ist.

Könnte man das in Etwa so machen

Code:
public void personSuchen()throws IOException{
	String suche = o.getInputString(); // Methode liest einen Namen ein
	String vector = v.toString();
	int anfang = indexOf(suche); 
	int ende = suche.length()-1;
	String ausgabe= vector.subString(anfang, ende);
	if (ausgabe != -1)
	System.out.println("Eintrag enthalten!");
	else
	System.out.println("Den Eintrag giebt es nicht!");
}

Und selbst wenn ich weiss, dass ein Name im Vector enthalten ist, dann bekomme ich noch lange nicht die dazugehörige Nummer!
Wie könnte ich das bloß anstellen

Gruß
SOA
 
Hallo!

Mit new Vector().toString().indexOf() kannst du zwar überprüfen ob ein String in einem Vector irgendwie enthalten ist, dies funktioniert aber auch nur, wenn deine Objekte, die in dem Vector enthalten sind die toString-Methode implementieren. Sonst geht das nicht.

Es gibt 2 andere Möglichkeiten.

1. (schnell) Deine Objecte im Vector implementieren eine equals-Methode, die NUR die Namen und nicht die Nummer vergleicht. Vorteil, du kannst einfach meinVector.contains(meinObject) aufrufen. Nachteil, die equals-Methode funktioniert nicht mehr so wie man es erwartet.

2. (besser) Du iterierst manuell über den Vector und schaust dir jedes Object an, ob es den gesuchten Namen enthält. Dann hast du auch gleich das gesuchte Objekt.

Grüsse TrueSun
 
Bedenke bitte auch, dass Du mit der Iterator lösung einen Type-Cast auf das vom Iterator zurückgegebene Objekt machen musst um auf die Funktionen (sprich Name, etc) deines definiert Objektes(bsp. Person) zugreifen kannst.

Sonst kannst du keinen Namensvergleich machen. Und du bekommst einen Fehler um die Ohren geschlagen!
 
Hallo,

klar, Iterator() soolte es da schon in jedem Fall sein...

Dachte in Etwa so:

iterator it = v.iterator();

while (it.hasNext()){
String liste = (String) it.next();
.........

und dann wollte ich eigentlich wie oben schon mit dem String weiter arbeiten....


Wäre das dann so in Odnung?

Viele Grüsse

SOA
 
Zurück