Die Größe eines Arrays kann nicht geändert werden. Wenn Sie ein größeres Array wünschen, müssen Sie ein neues instanziieren.
Eine bessere Lösung wäre die Verwendung eines, ArrayList
das nach Bedarf wachsen kann. Die Methode ArrayList.toArray( T[] a )
gibt Ihnen Ihr Array zurück, wenn Sie es in dieser Form benötigen.
List<String> where = new ArrayList<String>();
where.add( ContactsContract.Contacts.HAS_PHONE_NUMBER+"=1" );
where.add( ContactsContract.Contacts.IN_VISIBLE_GROUP+"=1" );
Wenn Sie es in ein einfaches Array konvertieren müssen ...
String[] simpleArray = new String[ where.size() ];
where.toArray( simpleArray );
Aber die meisten Dinge, die Sie mit einem Array tun, können Sie auch mit dieser ArrayList tun:
// iterate over the array
for( String oneItem : where ) {
...
}
// get specific items
where.get( 1 );
Verwenden Sie ein
List<String>
, wie zArrayList<String>
. Im Gegensatz zu Arrays ist es dynamisch erweiterbar (siehe: Effektive Java 2nd Edition, Punkt 25: Listen Arrays vorziehen ).Wenn Sie auf der Verwendung von Arrays bestehen, können Sie
java.util.Arrays.copyOf
ein größeres Array zuweisen, um das zusätzliche Element aufzunehmen. Dies ist jedoch nicht die beste Lösung.Dies ist
O(N)
perappend
.ArrayList
hat andererseits dieO(1)
Kosten pro Operation amortisiert.Siehe auch
quelle
ArrayList
intern macht.Apache Commons Lang hat
Es wird ein neues Array zurückgegeben. Wenn Sie jedoch aus irgendeinem Grund wirklich mit Arrays arbeiten, ist dies möglicherweise der ideale Weg, dies zu tun.
quelle
Es gibt eine andere Option, die ich hier nicht gesehen habe und die keine "komplexen" Objekte oder Sammlungen beinhaltet.
quelle
Es gibt keine Methode
append()
für Arrays. Stattdessen kann ein List-Objekt, wie bereits vorgeschlagen, die Notwendigkeit des dynamischen Einfügens von Elementen, z.Oder wenn Sie wirklich ein Array verwenden möchten:
Dies ist jedoch eine feste Größe, und es können keine Elemente hinzugefügt werden.
quelle
Wie Tangens sagte, ist die Größe eines Arrays festgelegt. Aber Sie müssen es zuerst instanziieren, sonst ist es nur eine Nullreferenz.
Dieses Array kann nur 10 Elemente enthalten. Sie können einen Wert also nur 10 Mal anhängen. In Ihrem Code greifen Sie auf eine Nullreferenz zu. Deshalb funktioniert es nicht. Verwenden Sie die ArrayList, um eine dynamisch wachsende Sammlung zu erhalten.
quelle
quelle
Ich habe diesen Code gemacht! Es wirkt wie ein Zauber!
Ich hoffe du magst es!!
quelle
Sie müssen eine Sammlungsliste verwenden. Sie können ein Array nicht neu dimensionieren.
quelle
Wenn Sie Ihre Daten in einem einfachen Array wie diesem speichern möchten
und Sie möchten einige Elemente wie Zahlen hinzufügen, bitte verwenden Sie uns StringBuilder, der viel effizienter ist als das Verketten von Strings.
Dies ist eine viel bessere Methode, um Ihren String zu erstellen und in Ihrem 'where'-Array zu speichern.
quelle
Hinzufügen neuer Elemente zum String-Array.
quelle
<code>
Tag verwendet und dies hatte Probleme mit den generischen Typen. Bitte versuchen Sie, dieses Tag zu vermeiden, da ... es Probleme gibt, und rücken Sie Ihren Code mit 4 Leerzeichen ein, um die richtige Formatierung zu erhalten. Ich habe das für deine Frage gemacht :).Es gibt viele Möglichkeiten, einem Array ein Element hinzuzufügen. Sie können ein temporäres
List
Element verwenden , um das Element zu verwalten und es dann wieder zu konvertieren,Array
oder Sie können das verwendenjava.util.Arrays.copyOf
und es mit Generika kombinieren, um bessere Ergebnisse zu erzielen.Dieses Beispiel zeigt Ihnen, wie:
Um diese Methode zu verwenden, müssen Sie sie nur so aufrufen:
Wenn Sie zwei Arrays zusammenführen möchten, können Sie die vorherige Methode folgendermaßen ändern:
Jetzt können Sie die Methode folgendermaßen aufrufen:
Wie bereits erwähnt, können Sie auch
List
Objekte verwenden. Es wird jedoch einen kleinen Hack erfordern, um es so sicher zu machen:Jetzt können Sie die Methode folgendermaßen aufrufen:
quelle
newArray[elements.length] = element;
, meintest dunewArray[elements.length - 1] = element;
?Ich bin nicht so erfahren in Java, aber mir wurde immer gesagt, dass Arrays statische Strukturen sind, die eine vordefinierte Größe haben. Sie müssen eine ArrayList oder einen Vektor oder eine andere dynamische Struktur verwenden.
quelle
Sie können eine Arrayliste erstellen und
Collection.addAll()
das String-Array in Ihre Arrayliste konvertierenquelle
Sie können dies einfach tun:
quelle
Wenn Sie die Größe eines Arrays wirklich ändern möchten, können Sie Folgendes tun:
quelle
Die Größe des Arrays kann nicht geändert werden. Wenn Sie ein Array verwenden müssen, können Sie Folgendes verwenden:
quelle
Es ist auch möglich, ausreichend großen Speicher vorab zuzuweisen. Hier ist eine einfache Stapelimplementierung: Das Programm soll 3 und 5 ausgeben.
quelle