Vector und remove?

Status
Nicht offen für weitere Antworten.

Titanpharao

Bekanntes Mitglied
Wieso macht das remove nicht einfach ein neues? Ich bekomme immer autos.size() = 1 ??
Versteh ich nicht...
Code:
	public void load(String pfad,int i){
		//Einlesen der XLS Datei mit Blatt nr
		try {
			Workbook workbook = Workbook.getWorkbook(new File(pfad));
			this.sheet=workbook.getSheet(i);
		} catch (Exception e) {}
		int nr=3;
		Cell zelle=null;
		boolean run=true;
		Vector<Auto> autos=new Vector<Auto>();
		
		while(run){
			try {zelle=sheet.getCell(2,nr);}
			catch (Exception e) {break;}
			autos.add(getauto(nr));
			System.out.println(autos.size()); 
			if(!zelle.getContents().equals(sheet.getCell(0,nr-1).getContents())){
				autolist.add(new Autolist(autos));
				//	autos.removeAllElements(); <???				
			}
			nr++;			
		}		
	}
 

The_S

Top Contributor
Titanpharao hat gesagt.:
Wieso macht das remove nicht einfach ein neues?

Ein neues was? remove soll entfernen (wie der Name schon sagt) und nicht neues machen. Generell wären ein paar mehr Details wünschenswert. Mit 2 hingeklatschten Sätzen und (vermutlich dazugehörenden) Code, kann niemand etwas anfangen, der nicht Gedanken lesen kann :roll:
 

Titanpharao

Bekanntes Mitglied
Na ja also ich wollte ein Vector in einen Vector schachteln. Dazu muss ich aber denn zweiten Vector immer wieder auf 0 zurück setzten. Weil der wieder neu gefült wird. Aber der überschreibt diesen dann nur noch, anstatt einfach einen neuen oder leeren Vector abzuliefern. Also Mein erster Vector wird nicht mehr richtig gefült.
 

The_S

Top Contributor
Titanpharao hat gesagt.:
Dazu muss ich aber denn zweiten Vector immer wieder auf 0 zurück setzten.

Warum das denn?

Titanpharao hat gesagt.:
Weil der wieder neu gefült wird.

Dann brauchst du doch kein Vector in einen Vector schachteln, wenn du eh immer nur einen hast. Irgendwie verwirrst du mich gerade auf höchstem Niveau ;) .
 

Titanpharao

Bekanntes Mitglied
Das ist perfekt zum Morgen. Ich habe eine Excel Tabelle. Diese hat immer blockweise verschiedene Autos. Es gehören aber immer eine bestimme Anzahl zu einer Gruppe.
Sagen wir 3Gruppen mit jeweils 10 Autos welche wiederrrum viele Attribute haben.

Jetzt will ich jeweils die Gruppen noch in einem Vector und die 10 Autos auch in einem.
Dazu lege ich zwei Vectoren an, einer für die "Gruppenzusammenfassung" und einer für die jeweiligen Gruppen. Wobei der für die Gruppen nach jeder Gruppe wieder neu beschrieben wird und bei "0" anfängt.
 

The_S

Top Contributor
ok, soweit klar. Aber wo ist jetzt das Problem? Autolist removen (anhand des Objekts oder der ID) und anchließend neu generieren und wieder einfügen. Oder Autolist aus dem Vector holen, nicht neu erzeugen, und entsprechend bearbeiten.
 

Titanpharao

Bekanntes Mitglied
Ok jetzt hast du mich verwirrt :bahnhof:

Also "autolist" ist der große Vector, welcher viele kleine Vectoren vom Typ "autos" enthält. "autos" enthält wiederrum die Klasse Autos das einfach eine Datenkapsellung ist.

Ich muss in Zeile Nr.20 die id des Objekts wieder auf 0 setzten.

Sozusagen

autolist:
0 1
2
3
4
1 1
2
3
4

......usw so will ich diese dann auch wieder herrausfassen mit denn Indexen. (oder halt bei 0 beginnen..) Nur wenn ich beim sprung von 0 auf 1 gehe wollte ich .remove machen, damit wenn ich .add sage der wieder bei 0 beginnt...macht er aber nicht, er zerstört ganzen Vector, so das nur noch Länge von 1 kommt...
 

The_S

Top Contributor
kann nicht sein. Wenn deine Klasse von Vector erbt, dann kannst du auch immer adden bis der Speicher voll ist.
 

Titanpharao

Bekanntes Mitglied
Oh ha ...ich habe glaube ich ein Fehler endeckt...nur frage ich mich gerade wie das auf einmal geht...der kommt immer wieder in die "if" abfrage..das war doch erst nicht der fall...

ahh da lag ein Fehler..."try {zelle=sheet.getCell(0,nr);}" soll es heißen.
 

Titanpharao

Bekanntes Mitglied
Nein :(

Jetzt "löscht er zwar" aber schreibt nicht neu :-/

System.out.println(ap.autolist.get(0).autos.get(3).ffid);
System.out.println(ap.autolist.get(1).autos.get(3).ffid);
System.out.println(ap.autolist.get(2).autos.get(3).ffid);

Sollte 1,2,3 bringen...bringt aber nur 3,3,3.

Also wieso ersetzt er die alten mit? Weil ich das selbe Objekt nochmal benutze und er damit automatisch alle andern mitzieht?
 

The_S

Top Contributor
ich denke mal den Fehler musst du in deiner Autolist bzw. Autos Klasse suchen. Bzw. darin, wie du sie füllst. Lass dir doch einfach mal bei jedem add anzeigen, was geadded wird. Dann siehste ja, wo der Fehler liegt.
 

Titanpharao

Bekanntes Mitglied
ha ich glaube ich habe es -.-
Code:
autos.removeAllElements();

Diese Zeile...löscht alles. Bzw es wird nichts gelöscht...
Poste mal ganzen Quelltext.

Code:
package parser;

import java.io.File;
import java.util.Vector;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class Autoparser {
	Vector<Autolist> autolist=new Vector<Autolist>();
	Sheet sheet;
	public void load(String pfad,int i){
		//Einlesen der XLS Datei mit Blatt nr
		try {
			Workbook workbook = Workbook.getWorkbook(new File(pfad));
			this.sheet=workbook.getSheet(i);
		} catch (Exception e) {}
		int nr=3;
		Cell zelle=null;
		boolean run=true;
		Vector<Auto> autos=new Vector<Auto>();
		
		while(run){
			try {zelle=sheet.getCell(0,nr);}
			catch (Exception e) {		
				autolist.add(new Autolist(autos));
				System.out.println(autos.get(0).fuid);
				break;
			}
			autos.add(getauto(nr));
			//sSystem.out.println(autos.size());
			if(!zelle.getContents().equals(sheet.getCell(0,nr-1).getContents())){
				System.out.println(autos.get(0).fuid);
				autolist.add(new Autolist(autos));
				System.out.println(autolist.get(0).autos.get(0).fuid);
				System.out.println("neu");
				//autos=new Vector<Auto>();
				autos.removeAllElements();
				}
			nr++;
		}
	}
	
	public Auto getauto(int nr){
		//Ein Auto wird erschaffen, so schnell geht das
		return new Auto(sheet.getCell(0,nr).getContents(),sheet.getCell(1,nr).getContents(),sheet.getCell(2,nr).getContents(),
				sheet.getCell(3,nr).getContents(),sheet.getCell(4,nr).getContents(),sheet.getCell(5,nr).getContents(),sheet.getCell(6,nr).getContents(),
				sheet.getCell(7,nr).getContents(),sheet.getCell(8,nr).getContents(),sheet.getCell(9,nr).getContents(),sheet.getCell(10,nr).getContents(),
				sheet.getCell(11,nr).getContents(),sheet.getCell(12,nr).getContents(),sheet.getCell(13,nr).getContents(),sheet.getCell(14,nr).getContents(),
				sheet.getCell(15,nr).getContents(),sheet.getCell(16,nr).getContents(),sheet.getCell(17,nr).getContents());		
	}
	
	
	public static void main(String[] args) {
		Autoparser ap=new Autoparser();
		ap.load("test_datei3.xls",0);
		//System.out.println(ap.autolist.get(0).autos.get(2).sid);
		System.out.println(ap.autolist.get(0).autos.get(0).fuid);
		System.out.println(ap.autolist.get(1).autos.get(0).fuid);
		System.out.println(ap.autolist.get(2).autos.get(0).fuid);
	}
}


package parser;

import java.util.Vector;

class Auto {
	public String ffid,sid,fuid,swf,fubzws,typ,fgbzwbg,fbzwb,d,l,tun,wg,verh,zeit,rb,wfuerk,klartext,dcode;

	public Auto(String ffid, String sid, String fuid, String swf,
			String fubzws, String typ, String fgbzwbg, String fbzwb, String d,
			String l, String tun, String wg, String verh, String zeit,
			String rb, String wfuerk, String klartext, String dcode) {
		this.ffid = ffid;
		this.sid = sid;
		this.fuid = fuid;
		this.swf = swf;
		this.fubzws = fubzws;
		this.typ = typ;
		this.fgbzwbg = fgbzwbg;
		this.fbzwb = fbzwb;
		this.d = d;
		this.l = l;
		this.tun = tun;
		this.wg = wg;
		this.verh = verh;
		this.zeit = zeit;
		this.rb = rb;
		this.wfuerk = wfuerk;
		this.klartext = klartext;
		this.dcode = dcode;
	}
}

class Autolist{
	Vector<Auto> autos=new Vector<Auto>();
	public Autolist(Vector<Auto> autos) {
		this.autos = autos;
	}
}

Also mir kommt es vor, als ob der gar kein neues "Autos" in Autolist erzeugt...und es immer nur zu überschreiben,.
 
M

Michael...

Gast
Hallo,

bin zwar noch nicht ganz durch den Code durchgestiegen aber in der Klasse Autoparser wird nur ein Vector autos erzeugt und dann mehrfach der autolist angefügt. Das heisst der Vector autolist zeigt mehrmals auf den selben Vector autos.
Das autos.remove bewirkt nur, dass der Vector geleert wird und das wirst Du ja nicht wollen, da Du später auf die Daten wieder zugreifen willst. Daher statt autos.remove autos = new Vector()
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Vector Strings in Array splitten Allgemeine Java-Themen 6
G Fehler mit Vector Allgemeine Java-Themen 3
M String Array Vector komprimieren und verschicken Allgemeine Java-Themen 3
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
U Vector aus Oberklasse spezialisieren Allgemeine Java-Themen 2
R Vector in JList Allgemeine Java-Themen 11
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
R Threads korrekte Synchronisation bei Vector und ArrayList Allgemeine Java-Themen 6
H Index Out of Bounds bei Vector Allgemeine Java-Themen 4
H Java Vector Frage Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
C Vector/Point-Problem Allgemeine Java-Themen 3
M Buffer-Vector einzeln und zusammen synchronisieren Allgemeine Java-Themen 4
B Suchalgorithmus der Klasse Vector Allgemeine Java-Themen 5
X Vector Allgemeine Java-Themen 3
S 2D Vector speziell ausgeben. Allgemeine Java-Themen 2
S Vector in Vector gespeichert, wie greift man darauf zu? Allgemeine Java-Themen 3
C Swing JTable Vector aus DB adden Allgemeine Java-Themen 3
R Vector.clear() oder neu initialisieren Allgemeine Java-Themen 3
S vector & strings Allgemeine Java-Themen 26
X Vector in Intervall-Menge umwandeln Allgemeine Java-Themen 4
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
J Erweiterte For-Schleife mit Vector Allgemeine Java-Themen 5
G JComponent in Vector - wie klonen? Allgemeine Java-Themen 7
V Performancefrage int-Vector/Stack Allgemeine Java-Themen 10
N HashMap<String,Vector<String>> a = new HashMap<String,Vector<String>>(); Allgemeine Java-Themen 4
H GUI: RectangleDrawer - zu viele Elemente im Vector für die paint-Methode Allgemeine Java-Themen 6
S JList in Vector Allgemeine Java-Themen 3
I Vector mit Objekten sortieren,Videos mit JMF wiedergeben Allgemeine Java-Themen 6
MQue Vector<..> nicht verwenden Allgemeine Java-Themen 4
H Vector<Character> zu char[] castern Allgemeine Java-Themen 2
T Element aus Vector entfernen Allgemeine Java-Themen 4
Spot84 Vector nach Ressourcetyp sortieren Allgemeine Java-Themen 4
M get Funktion von Vector Allgemeine Java-Themen 4
N wie greife ich auf hashmap in vector zu Allgemeine Java-Themen 9
V NullPointerException bei Vector Allgemeine Java-Themen 2
E einfache Frage zu Vector Allgemeine Java-Themen 8
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
G Vector beim Initialisieren befüllen Allgemeine Java-Themen 4
G Vector addAll Allgemeine Java-Themen 5
B sorteiren von Datein nach Zeitstempel in einem Vector Allgemeine Java-Themen 5
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
MQue Vector Allgemeine Java-Themen 7
F Vector in eine Datenbank speichern? Allgemeine Java-Themen 3
P Vector auf JTree Allgemeine Java-Themen 6
P dynamisches Array / Vector Allgemeine Java-Themen 2
P JTable/Vector Allgemeine Java-Themen 5
T Vector in JAVA ? Allgemeine Java-Themen 10
P Vector in vielen Klassen Allgemeine Java-Themen 21
MQue Vector implementieren Allgemeine Java-Themen 2
MQue Vector<State> Allgemeine Java-Themen 2
O hilfe bei Vector frage Allgemeine Java-Themen 6
F Synchronisation + Vector/ArrayList/LinkedList Allgemeine Java-Themen 7
Z Elemente in Vector nach Häufigkeit sortieren. Allgemeine Java-Themen 13
H java.util.Vector langsam ? Allgemeine Java-Themen 5
H Vector<T>[] vecs = new Vector<T>[10]; geht nicht Allgemeine Java-Themen 2
N Java API java.util.vector Allgemeine Java-Themen 3
G Vector erweitern Allgemeine Java-Themen 4
S Vector sortieren nach Objekt-Info? Allgemeine Java-Themen 9
A Probleme mit Vector Allgemeine Java-Themen 6
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
J Vector - Wert ersetzen Allgemeine Java-Themen 14
J Vector - Boolean Allgemeine Java-Themen 24
M Vector zu einem byte[] Allgemeine Java-Themen 5
J Vector<Shape> Speichern [gelöst] Allgemeine Java-Themen 11
Y Array mit ID in Vector Allgemeine Java-Themen 6
T Vector <-> double Allgemeine Java-Themen 4
T ArrayList bzw. Vector per set-Methode? Allgemeine Java-Themen 3
T ArrayList oder Vector als Parameter? Allgemeine Java-Themen 7
M Vector add() unchecked? Allgemeine Java-Themen 5
M Probleme und Zeitdruck: Kunden-DB (Vector) Allgemeine Java-Themen 13
T Vector Array Allgemeine Java-Themen 5
M Kunden-DB mit Vector Allgemeine Java-Themen 9
J Vector sortieren Allgemeine Java-Themen 3
M Vector - contain Allgemeine Java-Themen 13
C String und char[] / String[] und Vector Allgemeine Java-Themen 21
N Vector -> 2Diminsonaler Array Allgemeine Java-Themen 10
N Alledateien in einem Ordner in ein Vector speichern Allgemeine Java-Themen 19
K Object nach Vector konvertieren Allgemeine Java-Themen 3
Z ResultSet in Array oder Vector schreiben! Allgemeine Java-Themen 2
C vector von vector sortieren Allgemeine Java-Themen 4
D Vector in String Allgemeine Java-Themen 5
J Von Collection zu vector Allgemeine Java-Themen 5
D Vector in Datei schreiben Allgemeine Java-Themen 18
I Vector serialisieren: StackOverflow Allgemeine Java-Themen 13
H Vector in ein File-Array umwandeln Allgemeine Java-Themen 2
J User Klasse in den Vector, Object Klasse wieder raus... Allgemeine Java-Themen 4
K vector, synchronized und mehrere methoden Allgemeine Java-Themen 3
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Binäre Suchbäume remove Allgemeine Java-Themen 8
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
T Performance ArrayList#remove Allgemeine Java-Themen 8
L doppelt gelinkte liste /getFirst/removeFirst/clear/Remove Allgemeine Java-Themen 2
M Fehler in TreeSet.remove() Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben