Saya menggunakan ArrayList<String>
dan saya menambahkan data pada indeks tertentu, bagaimana cara memeriksa apakah ada indeks tertentu?
Haruskah saya sederhana get()
dan memeriksa nilainya? Atau haruskah saya menunggu pengecualian? Apakah ada cara lain?
Memperbarui
Terima kasih atas jawaban Anda, tetapi karena saya hanya menambahkan barang pada indeks tertentu, panjang daftar tidak akan menunjukkan mana yang tersedia.
get()
dan memeriksanyanull
- jangan mengandalkan pengecualian. Pertimbangkan untuk menggunakanHashTable
bukan java.sun.com/j2se/1.4.2/docs/api/java/util/Hashtable.htmlJawaban:
Metode
arrayList.size()
mengembalikan jumlah item dalam daftar - jadi jika indeks lebih besar dari atau sama dengansize()
, itu tidak ada.sumber
size()
" karena ini adalah indeks berbasis nol.index = 0
dan sayalist.size() == 0
juga. jadi pertama kali saya memeriksanya akan benar & saya akan menyiapkan daftar untuk melakukan sesuatu. tetapi kali berikutnya pada indeks itu, indeks saya akan tetap adaindex = 0
dan sekarang saya menginisialisasi ulang elemen itu dalam daftar ketika saya seharusnya melakukan sesuatu. Pikiran pertama adalah&&
kondisi kedua sepertilist.get(index) == null
tetapi yang tidak berfungsi adalah mengapa ada pertanyaan seperti iniMeskipun Anda mendapat lusinan saran tentang penggunaan ukuran daftar Anda, yang berfungsi untuk daftar dengan entri linier, sepertinya tidak ada yang membaca pertanyaan Anda.
Jika Anda menambahkan entri secara manual pada indeks yang berbeda, tidak satu pun dari saran ini yang akan berfungsi, karena Anda perlu memeriksa indeks tertentu.
Menggunakan if (list.get (index) == null) juga tidak akan berfungsi, karena get () melontarkan pengecualian alih-alih mengembalikan null.
Coba ini:
Di sini entri baru ditambahkan jika indeks tidak ada. Anda dapat mengubahnya untuk melakukan sesuatu yang berbeda.
sumber
try/catch
untuk jenis pekerjaan ini, itu akan memperlambat program Anda hingga 50% atau mungkin lebih .. pengecekan kesalahan menambahkan seperti tali ke kode yang ada untuk memperlambatnya .. lebih baik untuk menghindarinya di area kritis. Memeriksalength
dalam hal ini adalah hal terbaik yang dapat Anda lakukan, karenaindex
akan selalu kurang darilength
, yang lamaindex
akan bergeser dan menjadi baruindex
jika Andaremove
melakukannya, jadi itulah mengapa pemeriksaan aturan untuklength
selalu akan berhasil.Inilah yang Anda butuhkan ...
Mengapa tidak menggunakan array lama biasa? Menurut saya, akses yang diindeks ke Daftar adalah bau kode.
sumber
Biasanya saya hanya memeriksa apakah indeksnya kurang dari ukuran array
Jika Anda juga khawatir indeks menjadi nilai negatif, gunakan berikut ini
sumber
Mengenai pembaruan Anda (yang mungkin harus menjadi pertanyaan lain). Anda harus menggunakan array dari objek-objek ini sebagai ganti ArrayList, jadi Anda cukup memeriksa nilai untuk null:
Praktek terbaik
Jika Anda tidak memiliki ratusan entri dalam array Anda, Anda harus mempertimbangkan untuk mengaturnya sebagai kelas untuk menghilangkan angka ajaib 3,8 dll.
Alur kontrol menggunakan pengecualian adalah praktik yang buruk.
sumber
Karena
java-9
ada cara standar untuk memeriksa apakah sebuah indeks termasuk dalam array - Objects # checkIndex () :sumber
of()
Metode juga ditambahkan di Java 9 ke Daftar kelas : docs.oracle.com/javase/9/docs/api/java/util/List.html#of--Anda dapat memeriksa ukuran
ArrayList
menggunakansize()
metode ini. Ini akan mengembalikan indeks maksimum +1sumber
cara sederhana untuk melakukan ini:
sumber
Tes cepat dan kotor untuk mengetahui apakah indeks ada atau tidak. dalam implementasi Anda, ganti daftar Dengan daftar yang Anda uji.
atau untuk 2Dimensional ArrayLists ...
sumber
.length
memilikinyalist.size()
tetapi bukan masalah besar saya mengacau seperti ini sepanjang waktu haha saya mengandalkan kompiler untuk membimbing saya pada yang satu itu. Anda mungkin berpikir tentang array primitifJika indeks Anda kurang dari ukuran daftar Anda, maka daftar itu ada, mungkin dengan
null
nilai. Jika indeks lebih besar maka Anda dapat memanggilensureCapacity()
untuk dapat menggunakan indeks itu.Jika Anda ingin memeriksa apakah suatu nilai pada indeks Anda
null
atau tidak, panggilget()
sumber
Anda dapat memeriksa ukuran array.
sumber