# Elemente aus Vector löschen



## Guest (16. Jul 2004)

moin, 
vielleicht kann mir jemand helfen? ich hab eine klasse liste in der sich ein vector befindet. aus dem will ich etwas löschen. geht aber nicht. über den index funktioniert es schon nur nicht eben über artikel. hier der codeausschnitt. vielen dank im voraus.

main klasse: hier rufe ich in einem switch case die 3 auf, es soll dann ein artikel gelöscht werden

```
case 3: 
	System.out.println("Bitte den zu löschenden Artikel korekt  geschrieben  eintragen");
	String stringEllement = eingabe.leseZeileVonEingabe();
	liste.artikelAusListeLoeschen(stringEllement);	
	System.out.println("Es wurde der Artikel " + stringEllement + " gelöscht" );			
                break;
```

aus der klasse ShoppingEinagbe rufe ich dann die Methode leseZeileVonEingabe


```
public String leseZeileVonEingabe() {
		String eingabeString = "";
		BufferedReader din = new BufferedReader(newInputStreamReader(System.in));
		try {
			eingabeString = (din.readLine());
		} catch (IOException e) {
		// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return eingabeString;
```


```
aus der klasse ShoppingList rufe ich die methode artikelAusListeLöschen

	public void artikelAusListeLoeschen(String element) {
			
		vectorListe.remove (element);			
	}
```

Aber funktioniert einfach nicht!


----------



## P3AC3MAK3R (16. Jul 2004)

Was bedeutet "Aber funktioniert einfach nicht!"?

Gibt es eine Fehlermeldung oder tut das Programm einfach nichts?


----------



## Isaac (16. Jul 2004)

String stringEllement != dem Element in der Liste

Die beiden haben verschiedene Objekt Identiefizierungsnummern und deshalb hat "remove" keine Wirkung.


----------



## Guest (16. Jul 2004)

nein kommt keine fehlermeldung, es wird aber auch nichts gelöscht. aber das die beiden verschiedene Objekt Identiefizierungsnummern haben leuchtet mir ein. jetzt muß ich eine lösung suchen. thanks


----------



## Isaac (16. Jul 2004)

Eine der 100 Möglichkeiten wäre eine Klasse für deine Vectoreinträge zu machen und dort equals zu überschreiben.

Deine equals Methode prüft dann auf den String


```
public boolean equals(Object o)
{
    return o.getNameString().equals(strNameString);
}
```

dann per Vectormethode:

indexOf(Object elem). Die nutzt equals.


Möglichweise nutzt remove auch equals, könnte ich mir vorstellen, hab ich nun nicht nachgeschaut. Dann braucht man indexOf nicht mal.


----------



## Heiko (16. Jul 2004)

Du könntest auch beim befüllen des Vektors den Index merken wo sich das Objekt speichert, wenns nicht zu aufwendig ist und dnach dann suchen lassen.
Wie Isaac sagte es git zig Möglichkeiten dafür.


----------



## wicky (16. Jul 2004)

so, thanks für eure antworten. nachdem ich wußte das die beiden verschiedene Objekt Identiefizierungsnummern haben hab ich das problem wie folgt gelöst.

```
public void artikelAusListeLoeschen(String element) {

	for (int i = 0; i < getArtikelAnzahl(); i++){
	    ShoppingElement shoppingElement = (ShoppingElement) arrayListe.get(i);
					
	        if (element.equals( shoppingElement.getArtikelName() ) ) {
                            arrayListe.remove(i);
	        }
	}
}
```


----------

