Daugiau
Kaip į masyvą pridėti naujų elementų?
Turiu tokį kodą:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Šie du priedai nesukompiliuojami. Kaip tai veiktų teisingai?
271
3
Masyvo dydžio negalima keisti. Jei norite didesnio masyvo, turite sukurti naują masyvą.
Geresnis sprendimas būtų naudoti
ArrayList
, kuris gali didėti pagal poreikį. MetodasArrayList.toArray( T[] a )
grąžina jums jūsų masyvą, jei jums reikia tokio pavidalo.Jei reikia jį paversti paprastu masyvu...
Tačiau daugumą dalykų, kuriuos darote su masyvu, galite daryti ir su šiuo ArrayList:
Naudokite
Sąrašas
, pavyzdžiui,MasyvasSąrašas
. Skirtingai nuo masyvų, jį galima dinamiškai didinti (žr.: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).Jei primygtinai reikalaujate naudoti masyvus, galite naudoti
java.util.Arrays.copyOf
, kad paskirstytumėte didesnį masyvą papildomam elementui sutalpinti. Tačiau tai tikrai nėra geriausias sprendimas.Tai yra
O(N)
vienamappend
. Kita vertus,ArrayList
turiO(1)
amortizuotų sąnaudų vienai operacijai.Taip pat žr.
Kaip sakė tangens, masyvo dydis yra fiksuotas. Tačiau pirmiausia turite jį instancuoti, kitaip jis bus tik nulinė nuoroda.
Šiame masyve gali būti tik 10 elementų. Taigi reikšmę galite pridėti tik 10 kartų. Savo kode kreipiatės į nulinę nuorodą. Todėl tai neveikia. Norint turėti turėti dinamiškai didėjančią kolekciją, naudokite ArrayList.