Java ArrayList zamień na określony indeks


212

Potrzebuję pomocy z tą javą, proszę. Utworzyłem ArrayList żarówek i próbuję zastąpić żarówkę o określonym indeksie inną żarówką. Jak więc postępować z następującym nagłówkiem?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
Dla tego, co jest warte, szukałem interfejsu listy dla „zamień”, „umieść” lub „wstaw”. Nie myślałem o poszukiwaniu zestawu.
GuiSim,

2
@GuiSim Interfejs listy nie jest tak długi, możesz go łatwo przeczytać w całości za 5 minut ...

2
Korzystałem z autouzupełniania Eclipse, nie przeglądałem interfejsu.
GuiSim

Odpowiedzi:


367

Sprawdź set(int index, E element)metodę w interfejsie listy


3
ur right.Ale możesz pomyśleć o edycji, ponieważ twoja odpowiedź prowadzi do tego, że metoda set () jest metodą statyczną, która nie jest, prawda?
Android Killer

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

Problem w tej metodzie polega na tym, że zgłasza wyjątek arrayOutOfBoundException w przypadku, gdy tablicaLista nie została zainicjowana. Chciałbym umieścić element pod właściwym indeksem przy jego dodawaniu, nie jestem pewien, czy jest na to sposób.
Bionix1441,

@ Bionix1441 nawet jeśli lista została zainicjowana, nadal można spróbować ustawić wartość dla indeksu, który nie istnieje. Musisz tylko upewnić się, że Twój indeks jest prawidłowy.
TotoroTotoro

126

Można zastąpić elementy w określonej pozycji za pomocą metody set ArrayList, jak poniżej:

list.set( your_index, your_item );

Ale element powinien być obecny w indeksie przekazywanym do metody set (), w przeciwnym razie spowoduje to wyjątek.


1
@vaxquis ok proszę pana napisać java 8 i zwolnić. jesteśmy tutaj, aby go użyć. ;). W SO odpowiedź powinna być zawsze zgodna z pytaniem, więc najpierw przeczytaj pytanie. Na czym polega problem, jeśli zwróci poprzednią wartość, jeśli chcesz tę wartość, możesz użyć innej wartości. Zastępuje starą wartość i tyle.
Android Killer

1
@vaxquis wcześniej czytałeś mój komentarz. Wyraźnie wymieniona odpowiedź powinna być zawsze zgodna z pytaniem. Osoba, która zadała pytanie, wspomniała, że ​​chce zastąpić element, co oznacza, że ​​ma on tablicę z elementami. teraz wyczyść Sir ???
Android Killer

1
@vaxquis Co rozważasz, początkujący będzie o tym wiedział, więc te problemy nie mają żadnego sensu. Nadal edytowałem, aby cię uszczęśliwić :)
Android Killer

2
Bycie nowicjuszem oznacza, że ​​ktoś NIE WIE, jak poprawnie coś kodować. Podanie błędnego kodu ZAWSZE jest błędem i nie ma dla niego usprawiedliwienia, ponieważ może i zwykle wprowadza zamieszanie dla początkujących. Zapewnienie prawidłowego i niezależnego przykładu kodu to właśnie StackOverflow. Dziękuję za poprawę twojej odpowiedzi.



7
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 nowy element jest równy staremu elementowi pod względem metody equals (), prawda?
spikemanuk

@spikemanuk, zależy to od implementacji metody „equals ()” w „Item”. Jeśli równość zależy wyłącznie od „id” „Przedmiotu”, można użyć tego kodu, aby zastąpić „Przedmiot: {id = 1, name = London} przez„ Item: {id = 1, name = Paris}
Aniruddha Jagtap
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.