많은 수의 데이터
를 다룰 때 사용하는 자료구조이다.동일한 데이터 타입
을 순서에 따라 관리하는 자료구조이다.연속적
으로 저장된다.인덱스를 이용하여 데이터에 빠르게 접근
가능하다.
데이터 | 'a' | 'b' | 'c' | 'd' | 'e' |
---|---|---|---|---|---|
인덱스 | 0 | 1 | 2 | 3 | 4 |
위와 같은 배열(arr)이 존재한다고 할때, 인덱스를 이용하며 데이터에 바로 접근이 가능하다.
arr[0] = 'a'
arr[1] = 'b'
arr[2] = 'c'
arr[3] = 'd'
arr[4] = 'e'
데이터의 추가
, 삭제
가 번거롭다.
class MyArray{
int[] arr;
//배열의 초기 사이즈 설정
MyArray(int size) {
this.arr = new int[size];
}
//데이터 추가
public void addData(int index, int data) {
if(index < 0 || index > this.arr.length) {
System.out.println("Index Error");
}
int[] arrDup = this.arr.clone(); //기존 배열의 복사
this.arr = new int[this.arr.length + 1]; //새로운 사이즈의 배열 생성
for(int i = 0; i < index; i++) {
this.arr[i] = arrDup[i];
}
for(int i = index + 1; i < this.arr.length; i++) {
this.arr[i] = arrDup[i - 1];
}
this.arr[index] = data;
}
//데이터 삭제
public void removeData(int data) {
int targetIdx = - 1;
for(int i = 0; i < this.arr.length; i++) {
if(this.arr[i] == data) {
targetIdx = i;
break;
}
}
if(targetIdx == - 1) {
System.out.println("Data not found");
} else {
int[] arrDup = this.arr.clone();
this.arr = new int[this.arr.length - 1];
for(int i = 0; i < targetIdx; i++) {
this.arr[i] = arrDup[i];
}
for(int i = targetIdx; i < this.arr.length; i++) {
this.arr[i] = arrDup[i + 1];
}
}
}
}