2011-09-17 10 views
147

Potrzebuję pomocy z tym java proszę. Stworzyłem ArrayList żarówki i staram się wymienić żarówkę na konkretny indeks inną żarówką. Tak więc z następującym nagłówkiem, jak mam kontynuować?Java ArrayList zastąpić w określonym indeksie

public void replaceBulb(int index, Bulbs theBulb) { 

} 
+7

Dla tego, co jest warte, szukałem interfejsu List dla "zamień", "wstaw" lub "wstaw". Nie myślałem o poszukiwaniu zestawu. – GuiSim

+2

@GuiSim lista interfejsów nie jest długa, możesz z łatwością odczytać ją w całości za 5 minut ... – vaxquis

+1

Używałem autouzupełniania Eclipse, nie przeglądałem interfejsu. – GuiSim

Odpowiedz

257

Zapoznaj się z metodą set(int index, E element) w List interface

+3

u prawo.Ale możesz pomyśleć, aby go edytować, ponieważ odpowiedź ur prowadzi do tego, że metoda set() jest metodą statyczną, która nie jest, prawda? –

+9

@AndroidKiller Jest statyczny jako 'ArrayList.set();' ale gdy wywołujesz go na własnej liście, nie jest to: 'myArrayList.set (int, E);' – whitfin

+0

Problem w tej metodzie polega na tym, że generuje on wyjątek arrayOutOfBoundException w przypadek, gdy element tablica nie został zainicjalizowany. Chciałbym umieścić element na prawym indeksie przy jego dodawaniu, nie jestem pewien, czy jest na to jakiś sposób. – Bionix1441

20

użyć metody set(): see doc

arraylist.set(index,newvalue); 
106

można wymienić przedmioty w określonej pozycji przy użyciu metody opisanej w ArrayList jak poniżej:

list.set(your_index, your_item); 

Ale element powinien być obecny przy indeksie, który przechodzisz wewnątrz metody set(), inaczej wyrzuci wyjątek.

+1

@vaxquis ok proszę, napisz java 8 i wypuść ją. jesteśmy tutaj, aby z niego korzystać. ;). W SO odpowiedź zawsze powinna być zgodna z pytaniem, dlatego najpierw przeczytaj to pytanie. I jaki jest problem, jeśli zwraca poprzednią wartość, jeśli chcesz tę wartość, możesz użyć jej jeszcze. Zastępuje starą wartość i to jest to. –

+1

@vaxquis już przeczytałeś mój komentarz. Wyraźnie wspomniana odpowiedź powinna zawsze być zgodna z pytaniem. Osoba, która zadała pytanie, wspomniał, że chce zastąpić element, co oznacza, że ​​ma on listę elementów z elementami. teraz jasne, Sir ??? –

+1

@vaxquis To, co uważasz, początkujący będzie wiedział o tym, więc te problemy nie mają żadnego sensu. Nadal edytowałem, żeby się uszczęśliwić :) –

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

Działa to tylko wtedy, gdy nowa pozycja jest równa starej pozycji pod względem metody equals(), prawda? – spikemanuk