이 포스트는 FastCampus에 이 강의를 보고 포스팅되었습니다.
문제가 될 시 삭제될 예정입니다.
JDK 클래스에는 ArrayList와 Vector가 있습니다.
배열 생성, 추가기능, 배열을 중간에 추가하는 것과 제거하는 메서드를 만들어볼 겁니다. 같이 가보시죠.
전편에도 말했지만 모든 코드는 깃허브에 올라갈 예정입니다.
링크
int[] intArr; // integer 배열
int count; // 개수
public int ARRAY_SIZE;
public static final int ERROR_NUM = -999999999;
// 기본 생성자 생성
public myArray() {
ARRAY_SIZE = 10; // 크기 지정 안 할 시 기본값 10으로 설정
count = 0; // 개수 0으로 설정
intArr = new int[ARRAY_SIZE]; // 새로운 배열로 설정 ( 크기는 기본 10으로 )
}
// 오버라이딩 생성자 생성
public myArray(int size) {
ARRAY_SIZE = size; // 크기 지정할시 지정한 크기로 설정
count = 0; // 개수 0으로 설정
intArr = new int[size]; // 새로운 배열로 설정 ( 크기는 size 값 )
}
// 값 추가
public void addElement(int num) {
if (count >= ARRAY_SIZE) { // 만약 count가 배열 크기를 넘는다면
// 예외처리
throw new ArrayStoreException("더는 저장할 수 있는 공간이 없습니다.");
}
intArr[count++] = num; // 아니라면 배열에 값 추가하고 count += 1
}
// 배열 중간에 값을 추가합니다.
public void insertElement(int position, int num) {
// 만약 포지션 값이 이상하게 들어올 경우
if (position < 0 || position >= count) {
// 예외 발생
throw new ArrayStoreException("포지션 값이 이상합니다.");
}
// 만약 count가 배열 크기를 넘는다면
if (count >= ARRAY_SIZE) {
// 예외 발생
throw new ArrayStoreException("더는 저장할 수 있는 공간이 없습니다.");
}
// 위 if 문 두 개에 안 걸린다면 중간에 넣기를 실행
// i는 초깃값 count-1개, position 이상일 경우 종료, i가 하나씩 줄어들면서 진행
for (int i = count - 1; i >= position; i--) {
// 배열에 i-1 위치에 있는 값을 i 위치에 있는 값으로 변경
intArr[i+1] = intArr[i];
}
// position 인덱스에 num값 입력
intArr[position] = num;
// count + 1
count++;
}
public int deleteElement(int position) {
// 만약 count가 0이라면
if (isEmpty()) {
// 예외 발생
throw new ArrayStoreException("이미 값이 없는 배열입니다.");
}
// 만약 포지션 값이 이상하게 들어올 경우
if (position < 0 || position > count - 1) {
// 예외 발생
throw new ArrayStoreException("포지션 값이 이상합니다.");
}
// ret을 intArr[position] 값으로 할당
int ret = intArr[position];
// i 초깃값은 position으로, count - 1번까지 돌린다
for (int i = position; i <= count - 1; i++) {
// intArr[i]를 intArr[i+1]로 바꾼다.
intArr[i] = intArr[i+1];
}
// count - 1
count--;
// ret return
return ret;
}
public void checkMyArr() {
for(int i = 0; i < ARRAY_SIZE; i++) {
System.out.println(intArr[i]);
}
}
public boolean isEmpty() {
// 만약 count가 0이라면
if ( count == 0 ) {
// true 리턴
return true;
}
// 아니면 false
return false;
}
public int getCount() {
return count;
}
전체 구현 코드는 여기서도 확인 가능합니다.
배열에 대한 구현은 여기까지입니다.
다음 시간에는 연결리스트를 구현해보도록 하겠습니다.
수고하셨습니다.