특정 인덱스에서 Java ArrayList 교체


212

이 Java에 대한 도움이 필요합니다. 전구의 ArrayList를 만들었고 특정 색인의 전구를 다른 전구로 교체하려고합니다. 다음 제목으로 어떻게 진행합니까?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
가치있는 것을 위해, 나는 "바꾸기", "put"또는 "insert"에 대한 List 인터페이스를보고 있었다. 나는 세트를 찾지 않았다.
GuiSim

2
@GuiSim List 인터페이스는 그리 길지 않습니다. 5 분 안에 한 번에 전체를 쉽게 읽을 수 있습니다.

2
Eclipse의 자동 완성 기능을 사용했지만 인터페이스를 보지 않았습니다.
GuiSim

답변:


367

List 인터페이스set(int index, E element) 에서 메소드를 확인하십시오.


3
ur 응답. 그러나 ur 응답이 set () 메소드와 같은 사실이 아닌 정적 메소드이기 때문에 편집하려고 생각할 수 있습니다.
Android Killer

9
@AndroidKiller 정적 ArrayList.set();이지만, 자신의 목록에서 호출 할 때는 그렇지 않습니다.myArrayList.set(int, E);
whitfin

이 메소드의 문제점은 arrayList가 초기화되지 않은 경우 arrayOutOfBoundException이 발생한다는 것입니다. 추가 할 때 올바른 색인에 요소를 넣고 싶습니다. 할 수있는 방법이 있는지 확실하지 않습니다.
Bionix1441 2018 년

@ Bionix1441 목록이 초기화 된 경우에도 존재하지 않는 색인의 값을 설정하려고 시도 할 수 있습니다. 따라서 색인이 유효한지 확인하면됩니다.
TotoroTotoro

126

아래와 같이 ArrayList의 set 메소드를 사용하여 특정 위치에서 항목을 교체 할 수 있습니다.

list.set( your_index, your_item );

그러나 요소는 set () 메소드로 전달하는 색인에 있어야합니다. 그렇지 않으면 예외가 발생합니다.


1
@vaxquis ok 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
새 항목이 equals () 메소드 측면에서 이전 항목과 동일한 경우에만 작동합니다.
spikemanuk

@spikemanuk, 그것은 'Item'에서 'equals ()'메소드의 구현에 달려 있습니다. 동일성이 전적으로 'Item'의 'id'에 의존하는 경우이 코드를 사용하여 'Item : {id = 1, name = London}을'Item : {id = 1, name = Paris}로 대체 할 수 있습니다.
Aniruddha Jagtap
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.