Hoe voeg ik nieuwe elementen toe aan een array?
Ik heb de volgende code:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Die twee appends compileren niet. Hoe zou dat correct werken?
271
3
De grootte van een array kan niet worden gewijzigd. Als je een grotere array wilt, moet je een nieuwe array maken.
Een betere oplossing zou zijn om een
ArrayList
te gebruiken, die kan groeien als je hem nodig hebt. De methodeArrayList.toArray( T[] a )
geeft je je array terug als je hem in deze vorm nodig hebt.Als je het moet omzetten naar een simpele array...
Maar de meeste dingen die je met een array doet, kun je ook met deze ArrayList doen:
Gebruik een
List
, zoals eenArrayList
. Het's dynamisch groeibaar, in tegenstelling tot arrays (zie: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).Als je per se arrays wilt gebruiken, kun je
java.util.Arrays.copyOf
gebruiken om een grotere array toe te wijzen om het extra element te accommoderen. Dit is echter niet de beste oplossing.Dit is
O(N)
perappend
.ArrayList
, daarentegen, heeftO(1)
geamortiseerde kosten per bewerking.Zie ook
Zoals tangens zei, de grootte van een array is vast. Maar je moet het eerst instantiëren, anders zal het alleen een null reference zijn.
Deze array kan maar 10 elementen bevatten. Dus je kan een waarde maar 10 keer appen. In je code heb je toegang tot een null reference. Dat is waarom het niet werkt. Om een dynamisch groeiende verzameling te hebben, gebruik je de ArrayList.