Saya bertanya-tanya bagaimana cara menginisialisasi array integer sedemikian rupa sehingga ukuran dan nilainya berubah selama pelaksanaan program saya, ada saran?
Ya: gunakan ArrayList .
Di Java, array "normal" berukuran tetap. Anda harus memberi mereka ukuran dan tidak dapat mengembangkan atau mengontraknya. Untuk mengubah ukuran, Anda harus membuat array baru dan menyalin data yang Anda inginkan - yang tidak efisien dan merepotkan Anda.
Untungnya, ada semua jenis kelas bawaan yang mengimplementasikan struktur data umum, dan juga alat berguna lainnya. Anda akan ingin memeriksa Java 6 API untuk daftar lengkapnya.
Satu peringatan: ArrayList hanya dapat menampung objek (misalnya Integer), bukan primitif (misalnya ints). Dalam KEBANYAKAN kasus, autoboxing / autounboxing akan menangani ini untuk Anda secara diam-diam, tetapi Anda bisa mendapatkan beberapa perilaku aneh tergantung pada apa yang Anda lakukan.
int[] array = new int[size];
size
adalah variabel, tetapi panjang array harus tetap, apakah saya benar? @Lord Torgamussize
saat program berjalan; itu mendapat ukuran apa pun yang terjadisize
ketika baris itu dijalankan.null
di bagian akhir. Ada ide mengapa?Array di Jawa memiliki ukuran tetap. Yang Anda perlukan adalah ArrayList, salah satu dari Koleksi yang sangat berharga yang tersedia di Java.
Dari pada
Kau gunakan
Kemudian untuk mengubah daftar yang Anda gunakan
ints.add(y)
dan diints.remove(z)
antara banyak metode praktis lainnya yang dapat Anda temukan di Javadocs yang sesuai.Saya sangat menyarankan mempelajari kelas Koleksi yang tersedia di Java karena sangat kuat dan memberi Anda banyak fungsionalitas bawaan yang cenderung coba ditulis ulang oleh pemula Java jika tidak perlu.
sumber
List<Integer>
bukanArrayList<Integer>
?Array adalah ukuran tetap setelah dipakai. Anda dapat menggunakan Daftar sebagai gantinya.
Autoboxing membuat List dapat digunakan mirip dengan array, Anda dapat memasukkan int-values ke dalamnya:
sumber
Saya tidak setuju dengan jawaban sebelumnya menyarankan
ArrayList
, karenaArrayList
ini bukan Array Dinamis tapi Daftar didukung oleh sebuah array. Perbedaannya adalah Anda tidak dapat melakukan hal berikut:Ini akan memberi Anda IndexOutOfBoundsException karena belum ada elemen pada posisi ini meskipun larik pendukung akan mengizinkan penambahan seperti itu. Jadi, Anda perlu menggunakan implementasi Array kustom yang dapat diperpanjang seperti yang disarankan oleh @ randy-lance
sumber
Sumber: Cara membuat dynamic array
sumber
Disarankan untuk menggunakan List untuk menangani ukuran skala kecil.
Jika Anda memiliki banyak nomor, JANGAN PERNAH gunakan List dan autoboxing,
Daftar <Integer> list
Untuk setiap int, Integer baru dibuat secara otomatis. Anda akan merasa semakin lambat ketika ukuran daftar bertambah. Integer ini adalah objek yang tidak perlu. Dalam hal ini, menggunakan ukuran perkiraan akan lebih baik,
sumber
Bagaimana kalau menggunakan a
List
sebagai gantinya? Sebagai contoh,ArrayList<integer>
sumber
Anda tidak dapat mengubah ukuran array. Namun, Anda dapat membuat larik baru dengan ukuran yang tepat dan menyalin data dari larik lama ke larik baru.
Tetapi pilihan terbaik Anda adalah menggunakan IntList dari jacarta commons. ( disini )
Ia bekerja seperti List tetapi membutuhkan lebih sedikit ruang dan lebih efisien daripada itu, karena ia menyimpan int daripada menyimpan objek wrapper di atas int (itulah kelas Integer).
sumber
Saya menjawab pertanyaan ini dan tidak, Anda tidak memerlukan daftar larik atau hal lain, ini adalah tugas dan saya menyelesaikannya sehingga ya, larik dapat bertambah ukurannya. Berikut adalah tautan Cara menggunakan Java Dynamic Array dan ini adalah tautan untuk pertanyaan saya yang saya jawab Java Dynamic Array
sumber