Viac na
Ako pridať nové prvky do poľa?
Mám nasledujúci kód:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Tieto dva prídavky sa neskompilujú. Ako by to malo správne fungovať?
271
3
Veľkosť poľa nie je možné meniť. Ak chcete väčšie pole, musíte vytvoriť nové.
Lepším riešením by bolo použiť
ArrayList
, ktoré sa môže zväčšovať podľa potreby. MetódaArrayList.toArray( T[] a )
vám vráti vaše pole, ak ho potrebujete v tejto podobe.Ak ho potrebujete previesť na jednoduché pole...
Ale väčšinu vecí, ktoré robíte s poľom, môžete robiť aj s týmto ArrayListom:
Použite
List
, napríkladArrayList
. Na rozdiel od polí ho možno dynamicky zväčšovať (pozri: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).Ak trváte na použití polí, môžete použiť
java.util.Arrays.copyOf
na alokáciu väčšieho poľa, ktoré pojme ďalší prvok. Toto však naozaj nie je najlepšie riešenie.Toto je
O(N)
naappend
. Na druhej strane,ArrayList
máO(1)
amortizovaných nákladov na jednu operáciu.Pozri tiež
Ako povedal tangens, veľkosť poľa je pevne daná. Musíte ho však najprv inštanciovať, inak to bude len nulová referencia.
Toto pole môže obsahovať iba 10 prvkov. Takže hodnotu môžete pridať len 10-krát. Vo vašom kóde pristupujete k nulovej referencii. Preto to nefunguje. Aby ste mali dynamicky rastúcu kolekciu, použite ArrayList.