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.