2011-09-17 22 views
147

Bu java ile ilgili yardıma ihtiyacım var. Bir ArrayList ampulü yarattım ve bir ampulü başka bir ampulle belirli dizinde değiştirmeye çalışıyorum. Yani aşağıdaki başlık ile nasıl ilerleyebilirim?Java ArrayList Belirli bir dizide değiştirin

public void replaceBulb(int index, Bulbs theBulb) { 

} 
+7

Değeri için "değiştir", "koy" veya "ekle" için Liste arayüzüne bakıyordum. Set aramayı düşünmedim. – GuiSim

+2

@GuiSim Liste arayüzü o kadar uzun değil, 5 dakika içinde hepsini bir kerede kolayca okuyabilirsiniz ... – vaxquis

+1

Eclipse'in otomatik tamamlamasını kullanıyordum, arayüzü incelemedim. – GuiSim

cevap

257

Kontrol dışarı set() yöntem List interface

+3

u r sağa.Ama cevap vermek için düşünebiliriz çünkü ur cevap aslında gerçekte() yöntemi statik olmayan bir yöntemdir, öyle değil mi? –

+9

@AndroidKiller ArrayList.set(); 'olarak statiktir, ancak kendi listenizde arama yaptığınızda, bu: myArrayList.set (int, E);' – whitfin

+0

Bu yöntemdeki sorun, arrayOutOfBoundException öğesini dizine atmasıdır. arrayList başlatılmamışsa. Bunu yapmak için bir yol olup olmadığından emin olmadan, ekinde doğru dizine bir öğe koymak istiyorum. – Bionix1441

20

Kullanımında set(int index, E element) yöntemi: see doc

arraylist.set(index,newvalue); 
106

Sen ayarlama yöntemini kullanarak belirli bir konumda öğeleri değiştirebilirsiniz ArrayList aşağıdaki gibi:

list.set(your_index, your_item); 

Ancak bu öğe, set() yönteminin içinden geçtiğiniz dizinde mevcut olmalı, istisna atacaktır.

+1

@vaxquis Tamam, lütfen java 8 yazınız ve bırakın. onu kullanmak için buradayız.). SO'da, cevap her zaman soruya göre yapılmalıdır, bu yüzden lütfen önce soruyu okuyun. Ve eğer bir önceki değeri döndürürse, o değeri istiyorsanız o zaman başka bir şey bırakabilirsiniz. Eski değeri değiştiriyor ve bu da o. –

+1

@vaxquis yorumumu daha önce okudum. Açıkça ifade edilen cevap her zaman soruya göre olmalıdır. Soruyu soran kişi, elementi değiştirmek istediğinden bahsetmiştir, yani elementi olan arraylist var demektir. şimdi açık efendim ??? –

+1

@vaxquis Göz önünde bulundurduğunuz şeyler, bir yeni kullanıcı bunu bilecek, bu yüzden bu konular bir anlam ifade etmiyor. Yine de u mutlu etmek için düzenledim :) –

6
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