Noch einmal eine Frage zu Vektoren

soa

Erfahrenes Mitglied
Hallo zusammen,

jetzt muss ich leider noch einmal eine Frage zu Arbeiten mit Vektoren stellen.

Folgendes Beispiel:

Code:
//Ein Vektor

Vector v = new Vector ( 10, 10);

String name = "";
long nummer = 0;

Obj o = new Obj (name, nummer);

//Das Objekt geht jetzt in den Vektor:

v.add(o);

So, nun habe ich also viele Objekte angelegt, die jeweils aus einem Namen und einer Nummer bestehen. Jetzt möchte ich mit diesen Objekten arbeiten.

Beispielsweise möchte ich einfach alle Einträge ausgeben.
Bei mir kommt bei der Ausgabe immer das Objekt mit einer Zahl, die vom Vektor vergeben wird. Es soll aber der Name und die Nummer erscheinen.

Das gleiche Problem habe ich beim Vergleichen der Einträge, um ein Objekt zu löschen oder zu ändern. Es soll ja Name und Nummer verglichen werden.....

Über ein Codebeispiel wäre ich sehr verbunden.

Vielen Dank

Gruß
SOA
 
ja ist klar der gibt dir den index aus...


for(int i = 0, i < vector.size(); i++){

String item = vector.elementAt(i);

System.out.println(item);
}

so in der art müsste es funktionieren natürlich ist das nur ein beispiel du musst ja noch den long handlen
 
Zuletzt bearbeitet:
Code:
public void getEintraege() {
    for ( int i=0; i<v.size(); i++ ) {
      o = (Telefonlisteneintrag)v.get(i);
      System.out.println(o);
    }

Ja, genau.... So in etwa sieht das bei mir auch aus.

Aber wie handle ich dann jetzt die Ausgabe?

Wie splitte ich das Object wieder auseinander?
 
ja du hast doch jetzt deine ausgabe

Max Musterman 01654/66567 irgendwie so in der Art.

Und wenn du das als Objekt gespeichert hast , hast den Namen und die Nummer doch separat abgelegt oder Sonst könntest es ja nicht direkt splitten.

dann machst einfach:

System.out.println(o.Name);
System.out.println(o.Nummer); // ka wie deine Objekte heißen ;)

und dann gibt er es die ja separat aus. Wobei ich dann eigentlich nicht verstehe warum du einen zweidimensionalen Vector hast da das ja total unsinnig ist... hmm klärst mich sicher gleich auf :p
 
Zuletzt bearbeitet:
Hallo,

für die Ausgabe kannst du auch die toString()-Methode von Obj überschreiben.

Dann kannst du mit System.out.println(o); die Daten schon formatiert ausgeben
 
Zuletzt bearbeitet:
jo, klasse !

Vielen Dank..

P.S. Das ist kein zweidimensionaler Vektor.

Vektoren kennzeichnen sich dadurch, dass Sie, im Gegensatz zum Arrray, keine Endkapazität haben. Man kann in einen Vektor also beliebig viele Objekte einpflegen.
In meinem Beispiel bedeutet das, dass sich die Kapazität des Vektors automatisch um 10
erhöht, wenn sich 10 Objekte bereits im vektor befinden.
Man macht das, um die Systemresourcen zu schonen.

Ein schönes Wochenende :)
 
Nun noch eines:

Ich möchte eine methode erstellen, mit deren Hilfe ich die Einträge ändern kann:

Mein Vorschlag:


Code:
public void eintragAendern()throws IOException{
		System.out.println("Hier koennen Sie einen Eintrag abaendern:");
		System.out.println("-----------------------------------------");
		System.out.println("Geben Sie die Daten ein, die geaendert werden sollen:");
		System.out.println("");
		obj = new Telefonlisteneintrag(o.getInputString(), o.getInputNumm());
		for ( int i=0; i<v.size(); i++ ) {
      	               if (((Telefonlisteneintrag) v.get(i)).equals(obj) == true){
		
			System.out.println("Neue Daten eingeben");
			System.out.println("----------------------");
			System.out.println("");
			name = o.getInputString();
	  		nummer = o.getInputNummer();
	  		obj1 = new Telefonlisteneintrag(name, nummer);  
			int index;
			index = v.indexOf(obj1);
	        v.set(index, obj1);
	        System.out.println("Eintrag erfolgreich geaendert!");
	     }//if
	   }//For    
	 }//EintragAendern

Leider läuft die Methode nicht. Der Vergleich der Objekte funktioniert so irgendwie nicht!
Über einen helfenden rat wäre ich sehr dankbar:-)


Grüsse
SOA
 
so wie du das implementiert hast werden nicht die objekte sondern die HashWerte der Objekte verglichen. Das Du mit new eine neue Instanz des Objektes Telefonlisteneintrag anlegst, sind beide Objekte unterschiedlich. (Mit nem System.out auf Telefonlisteneintrag .hashCode siehst du das auch) . Zum Vergleichen müsste das Objekt comparable implementieren und Du müsstest den ensprechenden Comparator angeben. Einfacher wäre aber ein Vergleich nach einer ID oder ähnlichem.
 
Zurück