Замініть 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.