Kezdőoldal » Számítástechnika » Programozás » Java: ArrayListben hogy mozogsz?

Java: ArrayListben hogy mozogsz?

Figyelt kérdés

Arrayben:

for (...) if X[i] == A { };


Ugyanezt kéne összehozni arraylisttel, mert törölnöm is kell, hogyha az if teljesül.


2016. okt. 1. 20:33
 1/4 anonim ***** válasza:
2016. okt. 1. 20:55
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
mint hal a vízben
2016. okt. 1. 20:59
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

:D

Szerintem az 1. válaszoló bedobta a mély vízbe.


Nah akkor:

Legyen: "List<Integer> x = new ArrayList<>();" példány. Igen elfogadja így, mert már az Integer definiálva lett, így <>() elég. De kiírhatod, ha nagyon akarod.


x.add(6); // 0 indexen: 6-os

x.add(4); // 1 indexen: 4-es

x.add(7); // 2 indexen: 7-es


Az "add" triviálisan mindig a végére pakol, és azt a kulcsot adja neki, ami éppen aktuálisan szabad az utolsó foglalt után.


x.get(1); // 4-est adja vissza

x.remove(1); // 4-est adja vissza, és törli


Csak, hogy a "remove" esetén az 1-es index értéke felszabadul! Ezért minden ami utána van, azt rátolja. Tehát az 1-es indexnek újra lesz értéke, ami 7-es lesz, amiből az következik, hogy egy x.get(2) null-t fog vissza adni.


Tehát egy üres ArrayListre:

x.add(6); // 0 indexen: 6-os

x.add(4); // 1 indexen: 4-es

x.add(7); // 2 indexen: 7-es

x.remove(0); // törli a hatost, és 4-es átkerül a 0-s indexre és a 7-es az 1-esre.

x.remove(0); // törli a 4-est, és 7-es az 0-ás indexre kerül

x.remove(0); // törli a 7-est.

x.size(); // 0-t ad vissza, azaz ismételten üres listád van!


Ha van egy Listád amit for-ba teszel bele, vagy .stream()-el forEach/filter-ezel (Java8ban) akkor a 0-s indextől halad a nagyobb felé.

2016. okt. 2. 09:57
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

Ez mind szép és jó, de valójában két kérdés volt ez, és a második a fontosabb.


Ha törölni is akarsz közben, használj iterátort.


ArrayList<...> list = ...;

Iterator<...> iterator = list.iterator();

while (iterator.hasNext()) {

... s = iterator.next();

if (...) { i.remove(); }

}

2016. okt. 2. 12:52
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!