# Ersetzen eines Objektes in einer Liste?



## internet (16. Mai 2011)

Hallo,
ich habe ein Problem beim Ersetzen eines Objekts in einer Liste.
Ich habe ein Objekt, das eine Liste von A und B hat.
Bei getA muss ich aber auch das Objekt von B holen.
Also ich kann mir die Objekte in einer Liste mit GET holen.

object.getA(Object von B);
object.getB();


Nun möchte ich das Object von A ändern also besser gesagt das Objekt in der List ändern.
generell mache ich das doch mit set(index, element) oder?
Hinzufügen kann ich ein neues Objekt, aber ersetzen kann ich nichts.

Kann mir bitte jemand weiterhelfen


----------



## SlaterB (16. Mai 2011)

> set(index, element) oder?
richtig,

ansonsten sagst du nur 'bei mir gehts nicht' 
und erzählst fast nebenbei von Methoden wie getA(), die es in bekannten Listen wie ArrayList gar nicht gibt,
muss man dazu noch mehr sagen? (ich hoffentlich nicht, du schon  )


----------



## Spacerat (16. Mai 2011)

Seltsame Liste. Erinnert iwie an eine Map.


----------



## internet (16. Mai 2011)

Objekt A:
   - getB  return: Eine Liste
   - getC(ObjektB) return eine Liste


objekt B:  
   - getB return Eine Liste von C

Also um es besser zu beschreiben:
objekt A ist alles.
Objekt A kann mehrere Objekte von B haben (daher eine Liste)
Objekt A kann man mehrere Objekte von C haben.

Objekt B kann mehrere Objekte von C haben.

Nun möchte ich ein Objekt von C ändern / ersetzen.
Wenn ich nun aber 

```
A.getC.set(Ein Objekt von B).set(0, neueInstanz von C)
```

geht das nicht. 
Also es wird nicht ersetzt.
Was mache ich falsch?


----------



## FGB (16. Mai 2011)

Hi.

Object an sich ist ja keine Liste.

Du brauchst in dem Object, in dem du etwas aus einer Liste holen willst eine Methode, die dir das passende Object zurück gibt.

Beispiel:

```
private List<Object> objectsA = new ArrayList();

public Object getA(int index) {
return objectsA.get(index);
}
```

Wenn du dir jetzt das Object durch diese Methode zurück geben lässt, und es änderst, wird es, da es nur eine Referenz ist, auch in deiner Liste geändert.

Hoffe das hilft.

GRüße


----------



## Spacerat (16. Mai 2011)

```
list.set(object);
```
gibt es nicht.
Du hast aber das Glück, das in der Liste nur Objektreferenzen gespeichert sind. Deswegen brauchst dir die entsprechende Liste die du bearbeiten möchtest nur per "get()" holen und in dieser dann die gewünschten Objekte ersetzen. Die übergeordneten Listen brauchen gar nicht geändert werden.


----------

