Как да добавяме нови елементи в масив?
Имам следния код:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Тези две добавки не се компилират. Как това би работило правилно?
271
3
Размерът на масива не може да се променя. Ако искате по-голям масив, трябва да създадете нов.
По-доброто решение би било да използвате
ArrayList
, който може да нараства според нуждите ви. МетодътArrayList.toArray( T[] a )
ви връща вашия масив, ако ви е необходим в този вид.Ако трябва да го превърнете в обикновен масив...
Но повечето неща, които правите с масив, можете да правите и с този ArrayList:
Използвайте
List
, напримерArrayList
. За разлика от масивите, той може да се увеличава динамично (вижте: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).Ако настоявате да използвате масиви, можете да използвате
java.util.Arrays.copyOf
, за да заделите по-голям масив, който да побере допълнителния елемент. Това обаче наистина не е най-доброто решение.Това е
O(N)
за всякоприлагане
. От друга страна,ArrayList
имаO(1)
амортизирани разходи за операция.Вижте също
Както каза tangens, размерът на масива е фиксиран. Но първо трябва да го инстанцирате, защото в противен случай той ще бъде само нулева референция.
Този масив може да съдържа само 10 елемента. Така че можете да добавите стойност само 10 пъти. Във вашия код получавате достъп до нулева референция. Ето защо не работи. За да имате динамично нарастваща колекция, използвайте ArrayList.