Wie fügt man neue Elemente zu einem Array hinzu?
Ich habe den folgenden Code:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Diese beiden Anhänge werden nicht kompiliert. Wie würde das korrekt funktionieren?
271
3
Die Größe eines Arrays kann nicht geändert werden. Wenn Sie ein größeres Array wünschen, müssen Sie ein neues Array erstellen.
Eine bessere Lösung wäre die Verwendung einer
ArrayList
, die je nach Bedarf erweitert werden kann. Die MethodeArrayList.toArray( T[] a )
gibt Ihnen Ihr Array zurück, wenn Sie es in dieser Form benötigen.Wenn Sie es in ein einfaches Array umwandeln müssen...
Aber die meisten Dinge, die man mit einem Array machen kann, kann man auch mit dieser ArrayList machen:
Verwenden Sie eine
List
, wie z.B. eineArrayList
. Sie ist im Gegensatz zu Arrays dynamisch erweiterbar (siehe: Effective Java 2nd Edition, Punkt 25: Prefer lists to arrays).Wenn Sie darauf bestehen, Arrays zu verwenden, können Sie
java.util.Arrays.copyOf
verwenden, um ein größeres Array zuzuweisen, um das zusätzliche Element unterzubringen. Dies ist allerdings nicht die beste Lösung.Das ist
O(N)
proappend
. ArrayList" hingegen hatO(1)
amortisierte Kosten pro Operation.Siehe auch
Wie tangens sagte, ist die Größe eines Arrays fest. Aber Sie müssen es zuerst instanziieren, sonst wird es nur eine Null-Referenz sein.
Dieses Array kann nur 10 Elemente enthalten. Sie können also nur 10 Mal einen Wert anhängen. In Ihrem Code greifen Sie auf eine Null-Referenz zu. Deshalb funktioniert es nicht. Um eine dynamisch wachsende Sammlung zu haben, verwenden Sie die ArrayList.