» Willkommen auf Software «

The Papst
aus Lüneburg
offline



Real OC or Post God !
20 Jahre dabei !

Intel Pentium Dual Core
1300 MHz @ 1300 MHz


:moin::moin:

Hab ne kurze Java Frage. Wenn ich eine ArrayList habe, die mit den Integern 1-9 befüllt ist und ich will z.B. die 3 löschen. Wie gehe ich dann vor?

Mit a.remove(3) lösche ich ja nicht die 3 sondern die Zahl mit dem Index 3. Ich weiß, dass man ein Array auch nach Objecten durchsuchen und diese dann direkt löschen kann, ohne eine Schleife anzuwenden.
Hat jemand ne Idee?

Beiträge gesamt: 36710 | Durchschnitt: 5 Postings pro Tag
Registrierung: Jan. 2004 | Dabei seit: 7413 Tagen | Erstellt: 15:20 am 31. Okt. 2013
ocinside
aus Krefeld
online



Administrator
23 Jahre dabei !

Intel Core i9
3600 MHz @ 5200 MHz
78°C mit 1.552 Volt


Da gibt es ein paar Möglichkeiten, deshalb ist das Topic wohl sinnvoll.
Die primitivste wäre die Schleifenform ala
Code
for(i=0;i

Oder du versuchst die Objektposition zu ermitteln (wenn du sie nicht ohnehin schon kennst) und entfernst es dann mit remove.
Such mal nach LinkedList, dann bekommst du einige Lösungsbeispiele.
Oder poste mal den genauen Code, dann können wir daraus etwas basteln.


Hardware News lesen * Unterhalten * Smarthome und Gadgets
Übertakten, Modding und Testberichte * Fanartikel kaufen

Beiträge gesamt: 169734 | Durchschnitt: 20 Postings pro Tag
Registrierung: April 2001 | Dabei seit: 8396 Tagen | Erstellt: 17:08 am 31. Okt. 2013
The Papst
aus Lüneburg
offline



Real OC or Post God !
20 Jahre dabei !

Intel Pentium Dual Core
1300 MHz @ 1300 MHz


Das man eine Schleife nutzen kann, weiß ich. Ich habe aber gelesen, dass man der Methode .remove() ein Objekt mit geben kann und dieses wird dann in der ArrayList gesucht und entfernt. Blöd ist nur, wenn das Objekt ein Integer ist.

In Java ist auch eine Insel kann man folgendes nachlesen:

boolean remove( Object o ) Entfernt das erste Objekt in der Liste, das equals()-gleich mit o ist. Liefert true, wenn ein Element entfernt wurde. Eine optionale Operation.

Beiträge gesamt: 36710 | Durchschnitt: 5 Postings pro Tag
Registrierung: Jan. 2004 | Dabei seit: 7413 Tagen | Erstellt: 21:30 am 31. Okt. 2013
ocinside
aus Krefeld
online



Administrator
23 Jahre dabei !

Intel Core i9
3600 MHz @ 5200 MHz
78°C mit 1.552 Volt


Hast du es denn in Anführungsstriche gesetzt ?
Ich brauchte das bislang noch nicht, aber das scheint bei remove wirklich einfach zu klappen.
Schau mal hier :thumb:


Hardware News lesen * Unterhalten * Smarthome und Gadgets
Übertakten, Modding und Testberichte * Fanartikel kaufen

Beiträge gesamt: 169734 | Durchschnitt: 20 Postings pro Tag
Registrierung: April 2001 | Dabei seit: 8396 Tagen | Erstellt: 19:34 am 1. Nov. 2013
wakko0816
offline



OC God
19 Jahre dabei !

Intel Core i5
3500 MHz @ 4200 MHz
55°C mit 1.18 Volt


Listenelemente in einer Schleife löschen ist immer kritisch, einfach weil
man dabei die Länge der Liste verändert. Deswegen macht man das
mit Iteratoren:
Code

Iterator<Integer> iter = l.iterator();
while (iter.hasNext()) {
   if (iter.next().intValue() == 5) {
       iter.remove();
   }
}

(Quelle: Antwort auf StackOverflow )

Edit: Oh.. Sorry. Hatte garnicht gesehen, dass der letzte Beitrag schon so alt ist...
Habt ihr wahrscheinlich schon selbst gelöst...


(Geändert von wakko0816 um 13:17 am Nov. 30, 2013)

Beiträge gesamt: 1146 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2004 | Dabei seit: 7182 Tagen | Erstellt: 13:10 am 30. Nov. 2013
The Papst
aus Lüneburg
offline



Real OC or Post God !
20 Jahre dabei !

Intel Pentium Dual Core
1300 MHz @ 1300 MHz


Danke für die Antwort. Darauf ist es am Ende hinaus gelaufen.:thumb:

Beiträge gesamt: 36710 | Durchschnitt: 5 Postings pro Tag
Registrierung: Jan. 2004 | Dabei seit: 7413 Tagen | Erstellt: 15:28 am 1. Dez. 2013