Ganti Java ArrayList pada indeks tertentu


213

Saya butuh bantuan dengan java ini. Saya membuat ArrayList bulb, dan saya mencoba mengganti bulb pada indeks tertentu dengan bulb lain. Jadi dengan tajuk berikut, bagaimana saya melanjutkan?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
Untuk apa nilainya, saya melihat antarmuka Daftar untuk "ganti", "put" atau "masukkan". Saya tidak berpikir untuk mencari set.
GuiSim

2
@ GuiSim antarmuka Daftar tidak terlalu lama, Anda dapat dengan mudah membacanya utuh sekaligus dalam 5 menit ...

2
Saya menggunakan autocomplete Eclipse, tidak melihat melalui antarmuka.
GuiSim

Jawaban:


368

Lihat set(int index, E element)metode di antarmuka Daftar


3
Anda benar. Tetapi Anda mungkin berpikir untuk mengeditnya karena jawaban Anda mengarah pada fakta seperti metode set () adalah metode statis yang bukan, bukan?
Android Killer

9
@AndroidKiller Ini statis seperti ArrayList.set();tetapi ketika Anda menyebutnya di daftar Anda sendiri, itu bukan:myArrayList.set(int, E);
whitfin

Masalah dalam metode ini adalah ia melempar arrayOutOfBoundException seandainya arrayList belum diinisialisasi. Saya ingin menempatkan elemen pada indeks yang tepat sebagai tambahannya, tidak yakin apakah ada cara untuk melakukan itu.
Bionix1441

@ Bionix1441 bahkan jika daftar telah diinisialisasi, masih dimungkinkan untuk mencoba menetapkan nilai untuk indeks yang tidak ada. Jadi, Anda hanya perlu memastikan bahwa indeks Anda valid.
TotoroTotoro

126

Anda dapat mengganti item pada posisi tertentu menggunakan metode set ArrayList seperti di bawah ini:

list.set( your_index, your_item );

Tetapi elemen tersebut harus ada pada indeks yang Anda lewati di dalam set () metode lain yang akan membuang pengecualian.


1
@vquisquis ok pak tolong tulis java 8 dan lepaskan. kita di sini untuk menggunakannya. ;). Di SO, jawaban harus selalu sesuai dengan pertanyaan, jadi silakan baca pertanyaannya terlebih dahulu. Dan apa masalahnya jika mengembalikan nilai sebelumnya, jika Anda menginginkan nilai itu maka Anda bisa menggunakan yang lain, tinggalkan saja. Itu menggantikan nilai lama dan hanya itu.
Android Killer

1
@vquisquis apakah Anda membaca komentar saya sebelumnya. Jawaban yang disebutkan dengan jelas harus selalu sesuai dengan pertanyaan. Orang yang mengajukan pertanyaan, dia telah menyebutkan dia ingin mengganti elemen sehingga itu berarti dia memiliki daftar elemen dengan elemen di dalamnya. sekarang jelas Pak ???
Android Killer

1
@vaxquis Hal-hal yang Anda pertimbangkan, seorang pemula akan mengetahui hal ini, sehingga masalah ini tidak masuk akal. Tetap saya telah mengedit untuk membuat Anda bahagia :)
Android Killer

2
Menjadi seorang pemula berarti seseorang TIDAK TAHU cara membuat kode dengan benar. Itu selalu salah untuk memberikan kode yang tidak valid dan tidak ada alasan untuk itu, karena dapat dan biasanya akan membawa kebingungan kepada pemula. Memberikan contoh kode yang benar dan lengkap adalah tentang StackOverflow. Terima kasih atas peningkatan jawaban Anda.



7
public void setItem(List<Item> dataEntity, Item item) {
    int itemIndex = dataEntity.indexOf(item);
    if (itemIndex != -1) {
        dataEntity.set(itemIndex, item);
    }
}

1
Ini hanya akan berfungsi jika item baru sama dengan item lama dalam hal metode equals (), kan?
spikemanuk

@spikemanuk, itu tergantung pada implementasi metode 'equals ()' di 'Item'. Jika kesetaraan semata-mata tergantung pada 'id' dari 'Item' maka kode ini dapat digunakan untuk menggantikan 'Item: {id = 1, name = London} dengan' Item: {id = 1, name = Paris}
Aniruddha Jagtap
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.