Hvordan legge til nye elementer i en matrise?
Jeg har følgende kode:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Disse to vedleggene kompilerer ikke. Hvordan fungerer det riktig?
271
3
Størrelsen på en matrise kan ikke endres. Hvis du vil ha en større matrise, må du instansiere en ny.
En bedre løsning ville være å bruke en
ArrayList
som kan vokse etter behov. MetodenArrayList.toArray( T[] a )
gir deg tilbake arrayet ditt hvis du trenger det i denne formen.Hvis du trenger å konvertere det til et enkelt array...
Men de fleste ting du gjør med et array kan du også gjøre med denne ArrayList:
Bruk en
List
, for eksempel enArrayList
. Den kan vokse dynamisk, i motsetning til arrayer (se: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).Hvis du insisterer på å bruke matriser, kan du bruke
java.util.Arrays.copyOf
for å tildele en større matrise for å få plass til det ekstra elementet. Dette er imidlertid ikke den beste løsningen.Dette er
O(N)
perappend
.ArrayList
, derimot, harO(1)
amortisert kostnad per operasjon.Se også
Java Tutorials/Arrays * Java Tutorials/Arrays
Som tangens sa, er størrelsen på en matrise fast. Men du må instansiere det først, ellers vil det bare være en nullreferanse.
Denne matrisen kan bare inneholde 10 elementer. Så du kan bare legge til en verdi 10 ganger. I koden din har du tilgang til en nullreferanse. Det er derfor det ikke fungerer. For å ha en dynamisk voksende samling, bruk ArrayList.