"Narito ako."

"Hi, Ellie!"

"Ngayon ay pag-uusapan natin ang isang kawili-wiling paksa. Sasabihin ko sa iyo ang tungkol sa klase ng ArrayList ."

"Bagong klase? Astig! Anong magagawa nito?"

"Hayaan mo akong magsimula sa likod na kuwento. Ang tanging bagay na hindi nagustuhan ng mga programmer tungkol sa mga array ay hindi mo mababago ang kanilang laki. Ano ang gagawin mo kung kailangan mong magdagdag ng tatlo pang elemento sa isang array na mayroon lamang isang libreng slot? "

"Ang tanging solusyon sa problemang ito ay lumikha ng napakalaking array, upang matiyak na mayroon kang sapat na puwang para sa lahat ng mga elemento. Gayunpaman, kadalasang nangangahulugan ito ng nasayang na memorya. Kung ang isang array ay karaniwang naglalaman ng tatlong elemento, ngunit mayroong kahit na ang pinakamaliit na pagkakataon na maaaring kailanganin nitong mag-accommodate ng 100 elemento, kailangan mong lumikha ng 100-element array."

"So, ano ang naisip ng mga programmer?"

"Isinulat nila ang klase ng ArrayList , na ginagawa ang parehong bagay bilang isang Array, ngunit maaari nitong baguhin ang laki nito."

"Interesting move. Paano nila nagawa yun?"

"Ang bawat ArrayList object ay nag-iimbak ng isang regular na hanay ng mga elemento. Kapag nagbasa ka ng mga elemento mula sa isang ArrayList , binabasa nito ang mga ito mula sa panloob na array nito. Kapag isinulat mo ang mga ito sa ArrayList , isinusulat nito ang mga ito sa panloob na array nito. Dito, ihambing ang mga column na ito:"

Array ArrayList
Gumawa ng lalagyan para sa mga elemento
String[] list = new String[10];
ArrayList<String> list = new ArrayList<String>();
Kunin ang bilang ng mga elemento
int n = list.length;
int n = list.size();
Kumuha ng elemento mula sa isang array/collection
String s = list[3];
String s = list.get(3);
Sumulat ng isang elemento sa isang array
list[3] = s;
list.set(3, s);

"So, bakit mas maganda ang ArrayList? As far as I can tell, mas mahaba na ang code."

"Una, sinusuportahan ng ArrayList ang ilang karagdagang mga operasyon na kailangang gawin ng mga programmer sa lahat ng oras. Ang isang ordinaryong array ay hindi sumusuporta sa mga operasyong ito. Halimbawa, ang pagpasok o pagtanggal ng mga elemento mula sa gitna ng isang array nang hindi umaalis sa mga butas. "

"Pangalawa, ang kakayahang baguhin ang laki ng array. Kapag kailangan mong magdagdag ng isa pang elemento ngunit ang panloob na array ay walang anumang libreng puwang, narito ang nangyayari sa loob ng ArrayList :

a) Ang isa pang array ay nilikha na 50% mas malaki kaysa sa kasalukuyang panloob na array, kasama ang isang elemento.

b) Ang lahat ng mga elemento mula sa lumang array ay kinopya sa bago.

c) Ang bagong array ay nai-save bilang panloob na array ng ArrayList object. Ang lumang array ay idineklara na basura (hihinto lang namin ang pag-iimbak ng isang reference dito)."

Array ArrayList
Magdagdag ng elemento sa dulo ng array
Ang pagkilos na ito ay hindi suportado
list.add(s);
Magdagdag ng elemento sa gitna ng array
Ang pagkilos na ito ay hindi suportado
list.add(15, s);
Magdagdag ng elemento sa simula ng array
Ang pagkilos na ito ay hindi suportado
list.add(0, s);
Tanggalin ang isang elemento mula sa array
Maaari naming tanggalin ang isang elemento na may list[3] = null. Ngunit mag-iiwan ito ng 'butas' sa array.
list.remove(3);
2
Gawain
Java Syntax,  antasaralin
Naka-lock
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

"Paano tayo gagana sa ArrayList na ito?"

"Sa totoo lang, tulad ng ginagawa natin sa isang ordinaryong array. Tingnan. Ihambing natin ang pagtatrabaho sa isang ArrayList sa pagtatrabaho sa isang array. Ipagpalagay na kailangan nating ' basahin sa 10 string at ipakita ang mga ito sa screen sa reversed order '."

"Tignan mo to:

Gamit ang isang array
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
String[] list = new String[10];
for (int i = 0; i < list.length; i++)
{
  String s = reader.readLine();
  list[i] = s;
}

// Display the contents of the array
for (int i = 0; i < list.length; i++)
{
  int j = list.length - i - 1;
  System.out.println( list[j] );
}
}
Gamit ang isang ArrayList
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
ArrayList&ltString> list = new ArrayList&ltString>();
for (int i = 0; i < 10; i++)
{
  String s = reader.readLine();
  list.add(s);
}

// Display the contents of the collection
for (int i = 0; i < list.size(); i++)
{
  int j = list.size() - i - 1;
  System.out.println( list.get(j) );
}
}

Gumamit ako ng parehong kulay upang i-highlight ang mga katulad na pagkilos sa bawat column."

"Sa isang banda, lahat ay iba. Sa kabilang banda, ganoon pa rin."

"Tama. Maliban na hindi kami gumagamit ng mga square bracket kapag nagtatrabaho sa isang ArrayList . Sa halip, ginagamit namin ang get , set and add method."

"Yes, I gathered that much. Still, it looks very much the same."