Cara menambahkan elemen baru ke array?
Saya punya kode berikut:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Mereka menambahkan dua yang tidak menyusun. Bagaimana itu bekerja dengan benar?
271
17
Ukuran dari sebuah array dapat't dapat diubah. Jika anda ingin yang lebih besar array anda harus instantiate yang baru.
Solusi yang lebih baik akan menggunakan
ArrayList
yang dapat tumbuh seperti yang anda butuhkan. MetodeArrayList.toArray( T[] a )
memberi anda kembali anda menginap jika anda membutuhkannya dalam bentuk ini.Jika anda perlu mengkonversi ke array sederhana...
Tapi sebagian besar hal-hal yang anda lakukan dengan sebuah array yang dapat anda lakukan dengan ArrayList, terlalu:
Gunakan
klik disini<String>
, sepertiArrayList<String>
. It's secara dinamis growable, tidak seperti array (lihat: Effective Jawa 2nd Edition, Item 25: Sukai daftar untuk arrays).Jika anda bersikeras menggunakan array, anda dapat menggunakan
jawa.util.Array.copyOf
untuk mengalokasikan lebih besar array untuk menampung elemen tambahan. Ini adalah benar-benar tidak solusi terbaik, meskipun.Ini adalah
O(N)
pertambahkan
.ArrayList
, di sisi lain, memilikiO(1)
biaya perolehan diamortisasi per operasi.Lihat juga
Apache Commons Lang telah
ia mengembalikan sebuah array baru, tapi jika anda're-benar bekerja dengan array untuk beberapa alasan, hal ini dapat menjadi cara yang ideal untuk melakukan hal ini.
Ada pilihan lain yang saya belum't dilihat di sini dan yang doesn't melibatkan "kompleks" Benda atau Koleksi.
Tidak ada metode
append()
pada array. Bukan seperti yang sudah disarankan Daftar objek dapat melayani kebutuhan untuk secara dinamis memasukkan unsur-unsur misalnya.Atau jika anda benar-benar tertarik untuk menggunakan array:
tapi kemudian ini adalah ukuran yang tetap dan tidak ada elemen yang dapat ditambahkan.
Sebagai tangens mengatakan, ukuran dari array adalah tetap. Tapi anda harus menurunkannya pertama, yang lain itu hanya akan null referensi.
Array ini hanya dapat berisi 10 elemen. Jadi, anda dapat menambahkan nilai hanya 10 kali. Dalam kode anda anda're mengakses null referensi. Yang's mengapa hal itu tidak bekerja. Dalam rangka untuk memiliki tumbuh secara dinamis pengumpulan, penggunaan ArrayList.
Anda perlu menggunakan Daftar Koleksi. Anda tidak bisa re-dimensi array.
Ada banyak cara untuk menambahkan elemen ke array. Anda dapat menggunakan temp
Daftar
untuk mengelola elemen dan kemudian mengubahnya kembali keArray
atau anda bisa menggunakanjawa.util.Array.copyOf
dan menggabungkan dengan obat generik untuk hasil yang lebih baik.Contoh ini akan menunjukkan kepada anda bagaimana:
Untuk menggunakan metode ini, anda hanya perlu untuk menyebutnya seperti ini:
Jika anda ingin menggabungkan dua array anda dapat memodifikasi metode sebelumnya seperti ini:
Sekarang anda dapat memanggil metode seperti ini:
Seperti yang saya sebutkan, anda juga dapat menggunakan
Daftar
benda-benda. Namun, hal itu akan memerlukan sedikit hack untuk cor aman seperti ini:Sekarang anda dapat memanggil metode seperti ini:
Jika anda ingin menyimpan data dalam array sederhana seperti ini
dan anda ingin menambahkan beberapa elemen untuk itu seperti angka-angka yang perlu kita StringBuilder yang jauh lebih efisien daripada menggabungkan string.
Ini adalah metode yang jauh lebih baik untuk membangun string anda dan menyimpannya ke 'dan' array.
Menambahkan item baru ke String array.
I've dibuat kode ini! Ia bekerja seperti pesona!
Saya harap anda menyukainya!!
I'm tidak yang berpengalaman di Jawa tapi saya selalu mengatakan bahwa array adalah struktur statis yang memiliki ukuran yang telah ditetapkan. Anda harus menggunakan ArrayList atau Vektor atau struktur dinamis.
Anda hanya dapat melakukan ini:
anda dapat membuat arraylist, dan menggunakan
Koleksi.addAll()
untuk mengkonversi string array ke dalam arraylistJika seseorang benar-benar ingin mengubah ukuran array anda bisa melakukan sesuatu seperti ini:
Ukuran array tidak dapat diubah. Jika anda harus menggunakan sebuah array, anda dapat menggunakan:
Sistem.arraycopy(src, srcpos, dest, destpos, panjang);