Vector enthält nur letztes eingetragene Element

Status
Nicht offen für weitere Antworten.

Arp

Mitglied
Hi!

Ich habe grad den Fehler, das ich in einen Vector in einer While Schleife elemente gespeichert habe.
Wenn ich es aber wieder auslesen will, stelle ich fest, das im ganzen vector nur das letzte Element drin ist.
Also es ist die richtige Anzahl an Elementen gespeichert, aber immer nur das gleiche.

Ich finde grad keine lösung...

Probiert hab ich Vector.add(element), Vector.addElement(element), sogar insertElementAt(element, index)...
jedesmal das gleiche...

Komischerweise funktioniert es prima, wenn das Element ein bloßer String ist.
Aber sobald ich als Element eine eigene klasse habe, gehts nicht mehr.

Weiss jemand rat?
 

Wildcard

Top Contributor
Da dir vermutlich klar war das der Fehler nicht in der SUN Implementierung liegt, sondern eher in deinem Code, kannst du dir vermutlich auch denken das es schwierig ist ohne Code etwas dazu zu sagen :wink:
 

Arp

Mitglied
kein problem :)

Code:
boolean eof = false;
zeile = "";
Vector Gelb = new Vector();

while(!eof)
{
    if(zeile == null)
        eof = true;
    else
    {
        zeile = datei.readLine();
        if(zeile != null)
        {
            sys.sysid = getSys(zeile);
            sys.koord = getKoords(zeile);
            sys.gatedist = getDist(sys.koord, gate_gelb);
            Gelb.add(sys);
        }
    }
}


das System.out hab ich nur zum testen drin. Es wird immer ein unterschiedliches sysid ausgegeben, was bedeutet das es bis zum Gelb.add problemlos funktioniert.
Aber aus irgendeinem grund steht im vector immer nur das zuletzt eingetragene objekt.
 

Arp

Mitglied
Code:
		for(int i = 0; i<Gelb.size(); i++)
			System.out.println( ((system)(Gelb.elementAt(i))).sysid);

size ist hier nun 78 weil weiter oben 78 mal eingefügt wurde.
Aber ich hab dann eben 78 mal das letzte element.

system ist übrigens diese klasse:

Code:
class system
{
	int sysid;
	int[] koord = new int[3];
	int gatedist;
}
 

Wildcard

Top Contributor
Da diese Fragemente bis dahin korrekt aussehen bräuchte ich etwas kompilierbares um dir zu helfen.
Klassen schreibt man übrigens groß, und Variablen klein...
 

Arp

Mitglied
das ganze besteht aus fast 200 zeilen und braucht noch externe textdateien (aus denen eingelesen wird)... ich glaube nicht das es sinnvoll wäre den gesamten code reinzustellen :)

und das was davor/danach steht hat damit eigentlich auch nichts mehr zu tun, von daher glaube ich nicht das vorher ein fehler liegt.


Edit:
Ich hab grade ein System.out.println( ((system)(Gelb.elementAt(0))).sysid) nach dem Gelb.add() gemacht, und es steht da immer ein anderes...

Es scheint als würde add nichts hinzufügen, sondern das erste einfach überschreiben und dann nach hinten kopieren.
 

Wildcard

Top Contributor
Arp hat gesagt.:
Edit:
Ich hab grade ein System.out.println( ((system)(Gelb.elementAt(0))).sysid) nach dem Gelb.add() gemacht, und es steht da immer ein anderes...

Es scheint als würde add nichts hinzufügen, sondern das erste einfach überschreiben und dann nach hinten kopieren.
Nein, macht es nicht, und nein, List#add hat auch keine Bugs :wink:
 

Arp

Mitglied
Code:
import java.io.*;
import java.util.Vector;

class system
{
	int sysid;
	int[] koord = new int[3];
	int gatedist;
}

class syssort
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader datei;
		BufferedReader gate = new BufferedReader(new FileReader("gates.txt"));
		
		Vector sort_gelb = new Vector();
		
		Vector Gelb = new Vector();
		
		system sys = new system();
	
		boolean eof = false;

		String zeile = "";
		
		int[] koords = new int[3];
		
		int[] gate_gelb = new int[3];
		
		zeile = gate.readLine();
		gate_gelb = getKoords(zeile);
			
		datei = new BufferedReader(new FileReader("Liste_gelb.txt"));
		zeile = "";
		eof = false;
		int lauf = 0;
		while(!eof)
		{
			if(zeile == null)
				eof = true;
			else
			{
				zeile = datei.readLine();
				if(zeile != null)
				{
					sys.sysid = getSys(zeile);
					sys.koord = getKoords(zeile);
					sys.gatedist = getDist(sys.koord, gate_gelb);
					Gelb.insertElementAt(sys, lauf);
					lauf++;
				}
			}
		}

		
                for(int i = 0; i<Gelb.size(); i++) 
                    System.out.println( ((system)(Gelb.elementAt(i))).sysid);		
	}
	
	
public static int getDist(...)
{...}
	
public static int[] getKoords(...)
{...}
	
public static int getSys(...)
{...}
}
so, mal eine etwas abgespeckte version damits nicht zu lang wird...

habe eine Laufvariable eingefügt um das Element an einer bestimmten Position einzufügen, und es entsteht immernoch der gleiche effekt.
 

Arp

Mitglied
aaahh... du meinst im vector steht jeweils nur eine referenz, und wenn ichs änder, wirds auch im vector geändert?
 

Wildcard

Top Contributor
Nein, du hast nur eine Instanz. Du erstellst nur ein einziges mal eine Instanz von System (hast also auch nur einen satz Variablen) und fügst diese eine Instanz immer wieder in den Vektor ein.
 

Arp

Mitglied
aber ich änder ja die einträge der instanz bevor ichs einfüge... dann sollte doch immer was anderes im vector stehe.
 

Arp

Mitglied
Hab das system sys = new system(); nun in die While Schleife verschoben, und jetzt funktionierts.
thx :)
 

Onkel Hatti

Bekanntes Mitglied
Arp hat gesagt.:
Hab das system sys = new system(); nun in die While Schleife verschoben, und jetzt funktionierts.
thx :)

Ich hatte mal das gleiche Problem (*haareausgerauf*), ich hab dann einfach vector.addElement(variable.clone());
genommen.
Damit hats hingehauen :)

Gruß
Hatti
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
P Array in Vector speichern Java Basics - Anfänger-Themen 2
E Methoden new Vector().add(x).add(x); ? Java Basics - Anfänger-Themen 5
F Vector istGeordnet Java Basics - Anfänger-Themen 15
R Vector-Filterfunktion Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
J Vector Manipulieren.. Wie? Java Basics - Anfänger-Themen 16
M Vector eines Vectors einzeln ausgeben Java Basics - Anfänger-Themen 9
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
A Author in Vector Java Basics - Anfänger-Themen 22
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20
B Globale vector? Java Basics - Anfänger-Themen 7
E 2 Dimensionaler Vector Java Basics - Anfänger-Themen 5
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
P Collections Vector füllen in for-Schleife Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
M 2D Vector Java Basics - Anfänger-Themen 2
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
D Klasse Vector entwerfen Java Basics - Anfänger-Themen 7
A Arrays vs Liste vs Vector Java Basics - Anfänger-Themen 30
H in for Schleife über Vector iterieren Java Basics - Anfänger-Themen 2
S Datentypen Vector auslesen Java Basics - Anfänger-Themen 12
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
M Datentypen function(Vector<SuperClass>), Vector<Subclass> Java Basics - Anfänger-Themen 6
L Vector Sortieren Java Basics - Anfänger-Themen 8
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
kitz Telefonbuch (Vector) Java Basics - Anfänger-Themen 17
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
F Vector wird überschrieben Java Basics - Anfänger-Themen 8
T Vector sortiern Java Basics - Anfänger-Themen 7
C Frage zu Vector und muliplizieren des Inhaltes Java Basics - Anfänger-Themen 2
S Vector von eigenen Klassen Java Basics - Anfänger-Themen 2
J Collection Vector Java Basics - Anfänger-Themen 8
Streeber ArrayList/Vector, mehrdimensional Java Basics - Anfänger-Themen 11
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
babel Einen Vector/Liste mit Daten prüfen Java Basics - Anfänger-Themen 31
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
H Vector - Fehler? Java Basics - Anfänger-Themen 2
babel einen Vector nach Datum sortieren Java Basics - Anfänger-Themen 21
T Array-Vector Problem Java Basics - Anfänger-Themen 18
P Vector und Exception Java Basics - Anfänger-Themen 7
K Vector Java Basics - Anfänger-Themen 3
K Vector Java Basics - Anfänger-Themen 10
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
T Object aus Vector übergeben Java Basics - Anfänger-Themen 2
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
L Vector einem Array hinzufügen Java Basics - Anfänger-Themen 14
P Vector mit double Java Basics - Anfänger-Themen 3
P Vector Elemente auslesen Java Basics - Anfänger-Themen 9
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
W Vector mit String[] auslesen Java Basics - Anfänger-Themen 4
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
B Dopplete aus Vector entfernen Java Basics - Anfänger-Themen 8
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
K Vector zu Array machen Java Basics - Anfänger-Themen 10
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
L Multidimensional Vector - Recordset Java Basics - Anfänger-Themen 5
K Objektklasse mit leerem Vector füllen Java Basics - Anfänger-Themen 6
K Vector wird überschrieben Java Basics - Anfänger-Themen 7
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
K vector cannot be resolved Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
M ObjectInputStream, Object und Vector<Object> Java Basics - Anfänger-Themen 4
G Vector, equal & Casts Java Basics - Anfänger-Themen 5
N Objekte in einen Vector packen oder nicht? Java Basics - Anfänger-Themen 3
D Frage zu Vector Java Basics - Anfänger-Themen 7
S Problem mit Vector Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G 2D vector zugriff auf elementinterne elemente wie Java Basics - Anfänger-Themen 3
G vector in neuem vector sortieren Java Basics - Anfänger-Themen 3
G jede 2te zeile in vector leer einfügen, wie? Java Basics - Anfänger-Themen 4
G vector füllt sich immer weiter. wo muss ich ihn leeren? Java Basics - Anfänger-Themen 3
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Vector eigenen Typs mit Daten füllen Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben