so und ich wollte ganz einfach, bloß steh ich auf den Schlauch, eine abfrage machen.
Wenn id = 1 , gib mir die dazugehörige url.
(vzusammen ist der vector)
if (vzusammen.equals(„id=1“)){
System.out.println("url zu 1: " + url);
}else
System.out.println(„keine url“);
und hier gibt er mir immer, keine Url aus, wieso?
an sich stimmt es, nur was ist das Honk? das habe ich ja noch
nie gehört !
Das ist einfach nur ein allgemeines Beispiel, was im Prinzip passieren
muss, wenn man in einen Vector Objekte reinpackt und darauf dann
zugreifen will. Haette die Klasse auch Bing, Bong oder HansDieter
nennen koennen.
Was fuer Objekte hast du denn in den Vector reingetan?
Ich habe nur geraten, dass da Objekte vom Typ einer eigenen
Klasse (hier Honk) drinnen sind.
Der Vector ist quasi nur ein Container fuer Objekte. Deshalb
funktioniert das mit equals auch nicht. Du vergleichst Vector mit
String, equals ist aber eigentlich nur fuer den Vergleich zweier
Objekte vom gleichen Typ gedacht.
Ah ja, das war heut früh noch bissl komisch mit dem Honk !
Ja das equals nur mit gleichen Objekten vergleicht, weiß ich.
Also…
Die Print ausgabe sieht so aus:
[[1, adasd.html], [2,asas.html], …]
beides sind Strings.
Da dachte ich mir dann noch!
Iterator it = vzusammen.iterator();
while (it.hasNext()){
Object o = it.next();
if (o.toString().equals(„1“)){
System.out.println("url: "+url);
}else{
System.out.println(„keine url“);
}
Bist du dir sicher, dass das beides Strings sind? Mich
wundert, dass da [1, adasd.html] steht. Wenn ich mir hier
einen Vector mit Strings ausgeben lasse, sieht das so aus
(Vector enthaelt 2 String-Objekte): [a.a.a, b.b.b]
Es muss erst klar sein, was fuer Objekte in dem Vector
sind. Kannst du vielleicht die Zeile posten, in der du
den Vector befuellst?
vlinker.add(id);
vlinker.add(url);
vzusammen.add(vlinker);
}
id und url sind strings!und in vzusammen steht halt alles drin
Aha, du packst also einen Vector in einen Vector. Also, sind die
Objekte in vzusammen doch keine String-Objekte sondern Vector-Objekte,
die wiederum String-Objekte enthalten.
Zur Aufloesung braeuchtest du also eine doppelte for(oder while)-Schleife
mit 2 Iteratoren.
Wirkt umstaendlich und ist mit zu viel Overhead verbunden. Ich wuerde
da eher an eine andere Datenstruktur denken. Z.B. spricht nichts
dagegen direkt das Element in den Vector zu packen.
(Vector[Element, Element, …])
Oder eben in eine eigene Klasse. (Vector[Honk, Honk, …])
Aufloesung waere dann aehnlich bzw. gleich dem Honk-Beispiel.
Die removeElement() Aufrufe kannst du dir im uebrigen an der Stelle
auch sparen, da du mit vlinker = new Vector() ein neues Objekt
erzeugst, welches eh leer und noch nicht in vzusammen vorhanden ist.
aber wenn ich diese direkt mache
[vector[string, string, string,…]]
dann kann ich ja nicht unterscheiden, welche id zu welcher url
gehört!
Korrekt, deshalb ja auch der Vorschlag direkt das Element
(oder ein eigenes Objekt) in den Vector zu schreiben.
Damit haettest du id und url immer vereint in einem Objekt.
Wenn du nicht mit dem Element weiterarbeiten willst, dann
bau dir ein eigenes. (siehe Honk-Beispiel)
hast du eigentlich schon mal daran gedacht, eine hashmap zu verwenden? v.a. wenn ich an deine ständigen zugriffe über einen index denke. wäre viel effizienter und leichter zu programmieren. schau einfach mal in der java-api nach.