Замініть Java ArrayList за певним індексом


212

Мені потрібна допомога з цим Java, будь ласка. Я створив ArrayList цибулин, і я намагаюся замінити лампу в конкретному індексі іншою. Тож із наступним заголовком, як діяти?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
Що для цього варто, я розглядав інтерфейс списку для "замінити", "поставити" або "вставити". Я не думав шукати набір.
GuiSim

2
@GuiSim Інтерфейс списку не такий довгий, ви можете легко його прочитати одразу за 5 хвилин ...

2
Я використовував автозаповнення Eclipse, не переглядав інтерфейс.
GuiSim

Відповіді:


367

Ознайомтеся з set(int index, E element)методом в інтерфейсі списку


3
ур right.But ви можете подумати редагувати це, тому що відповідь ur призводить до факту, як метод set () - це статичний метод, якого немає, чи не так?
Android Killer

9
@AndroidKiller Це статично, ArrayList.set();але коли ви називаєте це у своєму власному списку, це не так:myArrayList.set(int, E);
whitfin

Проблема цього методу полягає в тому, що він викидає arrayOutOfBoundException у випадку, якщо arrayList не був ініціалізований. Я хотів би поставити елемент під правильним індексом при його додаванні, не впевнений, чи є спосіб це зробити.
Bionix1441,

@ Bionix1441, навіть якщо список було ініціалізовано, все одно можна спробувати встановити значення для індексу, який не існує. Тому вам просто потрібно переконатися, що ваш індекс дійсний.
TotoroTotoro

126

Ви можете замінити елементи на певній позиції, використовуючи встановлений метод ArrayList, як показано нижче:

list.set( your_index, your_item );

Але елемент повинен бути присутнім в індексі, який ви передаєте всередині методу set (), інакше він викине виключення.


1
@ vaxquis ОК, сер, будь ласка, напишіть java 8 та відпустіть його. ми тут, щоб використовувати його. ;). В ТА відповідь повинна бути завжди відповідно до питання, тому, будь ласка, прочитайте це питання спочатку. І в чому проблема, якщо вона повертає попереднє значення, якщо ви хочете це значення, то ви можете використовувати інше, залиште його. Він замінює старе значення і це все.
Android Killer

1
@vaxquis ти читав мій коментар раніше. Чітко зазначена відповідь повинна бути завжди відповідно до питання. Людина, яка поставила запитання, зазначила, що хоче замінити елемент так, що означає, що у нього є масив з елементами. тепер ясно сер ...
Android Killer

1
@vaxquis Речі, які ви вважаєте, новачок знатиме це, тому ці питання не мають жодного сенсу. Ще я відредагував, щоб зробити вас щасливим :)
Android Killer

2
Бути новачком означає, що хтось НЕ ЗНАЄ, як правильно кодувати щось. ВЖЕ неправильно вводити недійсний код і в цьому немає виправдання, оскільки він може і зазвичай спричинить плутанину у початківців. Надання правильного та автономного прикладу коду - це те, в чому полягає StackOverflow. Дякую за покращення вашої відповіді.



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

1
Це буде працювати лише в тому випадку, якщо новий елемент дорівнює методу рівним (), так?
spikemanuk

@spikemanuk, це залежить від впровадження методу 'equals ()' у 'Item'. Якщо рівність залежить виключно від "id" пункту "Item", тоді цей код можна використовувати для заміни "Item: {id = 1, name = London} на" Item: {id = 1, name = Paris}
Aniruddha Jagtap
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.