Belirli dizinde Java ArrayList değiştirme


212

Bu java konusunda yardıma ihtiyacım var lütfen. Ampullerden oluşan bir ArrayList oluşturdum ve belirli bir dizindeki ampulü başka bir ampulle değiştirmeye çalışıyorum. Peki aşağıdaki başlık ile nasıl ilerleyeceğim?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
Değer için, "replace", "put" veya "insert" için List arayüzüne bakıyordum. Set aramayı düşünmedim.
GuiSim

2
@GuiSim Liste arayüzü o kadar uzun değil, 5 dakikada bir kerede kolayca okuyabilirsiniz ...

2
Eclipse'nin otomatik tamamlamasını kullanıyordum, arayüze bakmadım.
GuiSim

Yanıtlar:


367

Check out set(int index, E element)yöntemi Listesi arayüzüne


3
ur right.But u düzenlemeyi düşünebilirsiniz, çünkü ur cevabı set () yöntemi gibi olmayan statik bir yöntemdir, öyle değil mi?
Android Killer

9
@AndroidKiller Statik ArrayList.set();ama kendi listenizde aradığınızda, değil:myArrayList.set(int, E);
whitfin

Bu yöntemdeki sorun, arrayList'in başlatılmamış olması durumunda arrayOutOfBoundException öğesini atmasıdır. Bir öğeyi eklerken doğru dizine koymak istiyorum, bunu yapmanın bir yolu olup olmadığından emin değilim.
Bionix1441

@ Bionix1441 Liste başlatılmış olsa bile, var olmayan bir dizin için bir değer ayarlamaya çalışmak hala mümkündür. Dolayısıyla, dizininizin geçerli olduğundan emin olmanız gerekir.
TotoroTotoro

126

ArrayList'in ayar yöntemini kullanarak öğeleri belirli bir konumda aşağıdaki gibi değiştirebilirsiniz:

list.set( your_index, your_item );

Ancak öğe, set () yönteminin içinden geçtiğiniz dizinde bulunmalıdır, aksi takdirde istisna atar.


1
@vaxquis tamam efendim java 8 yazıp bırakın. onu kullanmak için buradayız. ). SO'da cevap her zaman soruya göre olmalıdır, bu yüzden lütfen önce soruyu okuyun. Ve önceki değeri döndürürse sorun nedir, bu değeri istiyorsanız o zaman başka bir değer kullanabilirsiniz. Eski değerin yerini alıyor ve hepsi bu.
Android Killer

1
@vaxquis yorumumu daha önce okumuştunuz. Açıkça belirtilen cevap her zaman soruya göre olmalıdır. Soru soran kişi, elementi değiştirmek istediğinden bahsetti, böylece arrayliste içindeki elementler var. şimdi açık efendim ???
Android Katili

1
@vaxquis Düşündüğünüz şeyler, bir acemi bunu bilecek, bu nedenle bu konular bir anlam ifade etmiyor. Hala u mutlu etmek için düzenledim :)
Android Killer

2
Bir acemi olmak, birisinin bir şeyi düzgün bir şekilde nasıl kodlayacağını bilmediği anlamına gelir. Her zaman geçersiz kod sağlamak yanlıştır ve bunun için bir mazeret yoktur, çünkü yeni başlayanlara kafa karışıklığı getirebilir ve genellikle getirecektir. Doğru ve bağımsız bir kod örneği sağlamak StackOverflow ile ilgilidir. Cevabınızdaki iyileştirme için teşekkür ederiz.



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

1
Bu yalnızca yeni öğe equals () yöntemi açısından eski öğeye eşitse işe yarar, değil mi?
spikemanuk

@spikemanuk, 'Öğe'de' equals () 'yönteminin uygulanmasına bağlıdır. Eşitlik yalnızca 'Öğe'nin' kimliğine 'bağlıysa, bu kod' Öğe: {id = 1, ad = Londra} ile 'Öğe: {id = 1, ad = Paris}
Aniruddha Jagtap
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.