나는 그것이 매우 간단한 질문이라고 생각하지만, 이것을 올바르게 수행하는 방법을 알 수는 없습니다.
빈 배열 목록이 있습니다.
ArrayList<object> list = new ArrayList<object>();
추가하려는 객체가 있으며 각 객체는 특정 위치에 있어야합니다. 그러나 가능한 각 순서대로 추가 할 수 있어야합니다. 이것을 시도하면 작동하지 않으며 IndexOutOfBoundsException
:
list.add(1, object1)
list.add(3, object3)
list.add(2, object2)
내가 시도하면 충전입니다 ArrayList
함께 null
다음 위의 일입니다. 작동하지만 끔찍한 해결책이라고 생각합니다. 다른 방법이 있습니까?
답변
다음과 같이 할 수 있습니다 :
list.add(1, object1)
list.add(2, object3)
list.add(2, object2)
object2를 위치 2에 추가하면 object3이 위치 3으로 이동합니다.
항상 object3을 position3에 배치하려면 위치를 키로, 객체를 값으로 사용하여 HashMap을 사용하는 것이 좋습니다.
답변
객체 배열을 사용하여 ArrayList-로 변환 할 수 있습니다.
Object[] array= new Object[10];
array[0]="1";
array[3]= "3";
array[2]="2";
array[7]="7";
List<Object> list= Arrays.asList(array);
ArrayList는-[1, null, 2, 3, null, null, null, 7, null, null]
답변
그렇다면 일반 Array 사용을 고려하지 않는 것이 좋습니다. 용량을 초기화하고 원하는 인덱스에 객체를 넣으십시오.
Object[] list = new Object[10];
list[0] = object1;
list[2] = object3;
list[1] = object2;
답변
크기와 추가하려는 요소 사이에 null을 삽입하기 위해 ArrayList를 재정의 할 수도 있습니다.
import java.util.ArrayList;
public class ArrayListAnySize<E> extends ArrayList<E>{
@Override
public void add(int index, E element){
if(index >= 0 && index <= size()){
super.add(index, element);
return;
}
int insertNulls = index - size();
for(int i = 0; i < insertNulls; i++){
super.add(null);
}
super.add(element);
}
}
그런 다음 ArrayList의 어느 시점 에나 추가 할 수 있습니다. 예를 들어이 주요 방법은 다음과 같습니다.
public static void main(String[] args){
ArrayListAnySize<String> a = new ArrayListAnySize<>();
a.add("zero");
a.add("one");
a.add("two");
a.add(5,"five");
for(int i = 0; i < a.size(); i++){
System.out.println(i+": "+a.get(i));
}
}
콘솔에서이 결과를 얻습니다.
0 : 영
1 : 하나
2 : 두
3 : null
4 : 널
5 : 5
답변
나는 당신의 관심을 끌기 ArrayList.add
문서 가 발생 말한다 IndexOutOfBoundsException
– 인덱스가 범위 외의 경우 ( index < 0 || index > size()
)
size()
전화하기 전에 목록을 확인하십시오list.add(1, object1)
답변
빈 인덱스를 null로 채워야합니다.
while (arraylist.size() < position)
{
arraylist.add(null);
}
arraylist.add(position, object);
답변
@Maethortje
The problem here is java creates an empty list when you called new ArrayList and
지정된 위치에 요소를 추가하려고하면 IndexOutOfBound가 생겼으므로 목록에 해당 위치에 일부 요소가 있어야합니다.
다음을 시도하십시오
/*
Add an element to specified index of Java ArrayList Example
This Java Example shows how to add an element at specified index of java
ArrayList object using add method.
*/
import java.util.ArrayList;
public class AddElementToSpecifiedIndexArrayListExample {
public static void main(String[] args) {
//create an ArrayList object
ArrayList arrayList = new ArrayList();
//Add elements to Arraylist
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
/*
To add an element at the specified index of ArrayList use
void add(int index, Object obj) method.
This method inserts the specified element at the specified index in the
ArrayList.
*/
arrayList.add(1,"INSERTED ELEMENT");
/*
Please note that add method DOES NOT overwrites the element previously
at the specified index in the list. It shifts the elements to right side
and increasing the list size by 1.
*/
System.out.println("ArrayList contains...");
//display elements of ArrayList
for(int index=0; index < arrayList.size(); index++)
System.out.println(arrayList.get(index));
}
}
/*
Output would be
ArrayList contains...
1
INSERTED ELEMENT
2
3
*/