Java ArrayList заменить на определенный индекс


213

Мне нужна помощь с этим Java, пожалуйста. Я создал ArrayList лампочек и пытаюсь заменить лампочку по определенному индексу другой лампочкой. Итак, со следующим заголовком, как мне поступить?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
Что бы это ни стоило, я искал в интерфейсе списка «заменить», «положить» или «вставить». Я не думал о поиске набора.
— GuiSim

2
@GuiSim Интерфейс List не такой длинный, вы можете легко прочитать его целиком за 5 минут ...

2
Я использовал автозаполнение Eclipse, не просматривал интерфейс.
— GuiSim

Ответы:


368

Проверьте set(int index, E element)метод в интерфейсе списка


3
Вы правы. Но вы можете подумать, что можете отредактировать его, потому что ваш ответ приводит к тому, что метод set () - это статический метод, не так ли?
— Android Killer

9
@AndroidKiller Это статично, ArrayList.set();но когда вы вызываете его в своем собственном списке, это не так:myArrayList.set(int, E);
— whitfin

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

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

126

Вы можете заменить элементы в определенной позиции, используя метод set ArrayList, как показано ниже:

list.set( your_index, your_item );

Но элемент должен присутствовать в индексе, который вы передаете внутри метода set (), иначе он выдаст исключение.


1
@vaxquis Хорошо, сэр, пожалуйста, напишите java 8 и выпустите ее. мы здесь, чтобы использовать это. ;). В SO ответ должен быть всегда в соответствии с вопросом, поэтому, пожалуйста, сначала прочтите вопрос. И в чем проблема, если он возвращает предыдущее значение, если вы хотите это значение, то вы можете использовать другое, оставьте его. Он заменяет старое значение и это все.
— Android Killer

1
@vaxquis ты читал мой комментарий раньше. Четко упомянутый ответ всегда должен быть в соответствии с вопросом. Человек, который задал вопрос, он упомянул, что хочет заменить элемент так, что означает, что у него есть arraylist с элементами в нем. теперь ясно, сэр ???
— 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
Это будет работать только в том случае, если новый элемент равен старому в терминах метода equals (), верно?
— 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.