Auf Element in Arry zugreifen

schmiddi86

Mitglied
Hallo,

ich möchte in einem Array ein bestimmtes Objekt löschen bzw. ändern.

Dazu benötige ich jedoch die Position (integer) des Objekts innerhalb des Arrays.

Wie kann ich diese Abfragen?

Viele Grüße


Christian
 
Schau dir vlt. mal die Klasse ArrayList an.
Damit kannst du unter anderem ganz gezielt ein Object aus der List löschen mit
Java:
.remove(Object o)
Edit:
Hiermit kannst du auch ein Object zum Bearbeiten dir holen:
Java:
.get(int index)
Gruß Philipp
 
Zuletzt bearbeitet:
Das wird so nicht gehen.

Du könntest vielleicht über das Array iterieren und mithilfe von Abfragen über die Eigenschaften des Objekts herausfinden, wo es steht, aber eigentlich ist so ein Fall wie der von dir eher ungewöhnlich.
Kannst du etwas Code zeigen? Vielleicht steckt irgendwo ein Denk-/Designfehler drin.
 
Natürlich.

Hier der Quellcode:

Java:
    private void showObjekte()
    {
        String s;

        Iterator <Artikel>iter = ArtikelListe.iterator();
        while(iter.hasNext())
        {
            Artikel i  =  iter.next();
            
            System.out.print((i.getAttribut1()); //könnte zB eine Artikelnr. sein
            System.out.print((i.getAttribut2()); //könnte ein Preis sein
            System.out.print((i.getAttribut3());
           
        }

    }

Mittels dieser Methode werden die Attribute der im Array abgelegten Objekte in eine "Tabelle" geschrieben. In diese Methode/Tabelle Müsste dann noch dass Attribut Objektposition im Array.

Ablauf:
Nun benötige ich eine Methode, mit der ich die Attribute der Objekte ändern bzw. das ganze objekt löschen kann.

Beispiel:
Ich gebe die Artikelnr. ein, und kann danach beim Objekt mit dieser Artikelnummer den Preis ändern.

Oder: Ich gebe Artikelnr. ein, Objekt wird komplett gelöscht.


Ist das realisierbar? Wenn ja wie?

Danke!
 
Du könntest in deine Schleife eine Abfrage einbauen wie diese:
Java:
if(i.getAttribut1() == 93457) { //wenn getAttribut1() die Art.-Nr. holt und 93457 die Art.-Nr. des Artikels ist, den du weghaben willst
    iter.remove(); //Removes from the underlying collection the last element returned by the iterator (optional operation). (aus: java.util.Iterator)
}

Das löscht allerdings nicht (!) das Objekt, nur die Referenz darauf. D.h., sollte irgendwo noch eine Referenz auf das Objekt existieren, wird der Garbage Collector es nicht einsammeln können.
 
Vielen dank für deine Antwort.

Funktioniert das ganze denn wirklich so?
Also was ich meine:
Ist es bei deiner Version nicht so, dass er lediglich prüft, ob die eingegebene Nummer gleich der des Objekts an der aktuellen position ist?

Weil ich möchte ja, nachdem ich mir die Tabelle habe anzeigen lassen, die Liste ändern nach dem Gedanken:

"Hmm, der Artikel mit der Nummer 911 gefällt mir nicht. Da ändere ich mal den Preis."
 
Ist es bei deiner Version nicht so, dass er lediglich prüft, ob die eingegebene Nummer gleich der des Objekts an der aktuellen position ist?

Weil ich möchte ja, nachdem ich mir die Tabelle habe anzeigen lassen, die Liste ändern nach dem Gedanken:

"Hmm, der Artikel mit der Nummer 911 gefällt mir nicht. Da ändere ich mal den Preis."
War doch auch nur ein Beispiel von mir, letztlich kannst du es doch designen, wie du willst. Wenn du den Artikel mit Artikelnr. 911 durch die if-Abfrage in der Schleife gefunden hast, ist es dir doch freigestellt, eine (selbstgeschriebene) Methode wie setPreis() aufzurufen, die das macht, was du willst.
 

Zurück
Oben