[Java 자료구조] 배열 구현해보기

2022. 2. 7. 14:02·Java & Kotlin

배열(Array) 구현해보기

배열에서의 연산 중 요소들을 한 칸씩 뒤로 미루고 원하는 위치에 요소를 삽입하는 insertElement() 메서드와 원하는 위치의 요소를 삭제하여 나머지 요소를 한칸씩 앞으로 당겨오는 removeElement() 메서드를 구현해본다. 

 

기본 변수
  • 정수 배열을 나타내는 intArr와 배열의 개수를 나타내는 count를 선언한다.
  • ARRAY_SIZE는 배열이 생성될 때 할당되는 크기이다.
  • 이때 요소의 개수가 배열의 크기만큼 다 들어있지 않을 수 있으므로 ARRAY_SIZE >= count이다.
  • ERROR_NUM은 연산 오류 시 출력되는 값이다.
int[] intArr;   	// int array
int count;  		// element 개수

public int ARRAY_SIZE;
public static final int ERROR_NUM = -999999999;

 

생성자
  • 생성자는 default 생성자와 배열의 크기를 매개변수로 받는 생성자가 존재한다.
  • default 생성자로 MyArray를 인스턴스를 생성하면 배열의 기본 크기는 10으로 잡힌다.
public MyArray()	// default constructor
{
    count = 0;
    ARRAY_SIZE = 10;
    intArr = new int[ARRAY_SIZE];
}

public MyArray(int size)	// size를 매개변수로 받는 constructor
{
    count = 0;
    ARRAY_SIZE = size;
    intArr = new int[size];
}

 

insertElement() 메서드
  • 매개변수 position은 배열의 넣으려는 위치(인덱스 값)이고 num은 넣으려는 값을 의미한다.
  • 마지막 요소의 인덱스는 count-1이다.
  • 첫번째 조건문에서 position의 값이 0보다 작거나 마지막 원소 다다음에 넣을 경우 오류를 출력한다.
  • 두번째 조건문에서 배열의 크기와 요소의 개수가 일치할 경우 (꽉 찰 경우) 오류를 출력한다.
  • for문에서는 값을 삽입하기 위해 요소들을 한칸씩 뒤로 이동시키는 연산을 시행한다.
  • 값을 이동시키고 나서 원하는 위치에 넣으려는 값을 대입해준다.
  • 요소의 개수가 증가했다는 의미로 count 변수를 증가시켜준다.
public void insertElement(int position, int num)
{
    int i;

    if ( position < 0 || position > count ) {	// 배열의 index 값이 0보다 작거나 한 칸 떨어뜨려 넣을 경우
        System.out.println("insert Error");
			return;
    }

    else if ( count >= ARRAY_SIZE ) {	// 배열이 꽉 찬 경우
        System.out.println("not enough memory");
			return;
    }

   for( i = count - 1 ; i >= position ; i--) {	// 요소의 이동
			intArr[i+1] = intArr[i];
		}
		intArr[position] = num;
		count++;

}

 

MyArrayTest.java
public class MyArrayTest {

	public static void main(String[] args) {
		
		MyArray myarray = new MyArray(5);
		myarray.addElement(10);
		myarray.addElement(20);
		myarray.addElement(30);
		myarray.addElement(40);
		
		myarray.insertElement(1, 50);
		myarray.printAll();
		
	}

}

 

수행 결과
10
50
20
30
40

 

removeElement() 메서드
  • 반환해줄 ret 변수를 ERROR_NUM으로 설정한다.
  • 첫번째 조건문에서 배열이 비었을 경우 오류를 출력한다.
  • 두번째 조건문에서 배열의 index 값이 0보다 작거나 마지막 요소보다 뒤에 있는 요소를 꺼내려는 경우 오류를 출력한다.
  • 오류가 나지 않았을 때 ret를 꺼내려는 값으로 설정해준다.
  • for문에서 제거 후 요소를 한 칸씩 앞으로 당겨오는 연산을 시행한다.
  • 요소를 이동해준 후 요소의 개수를 나타내는 count 변수를 감소시키고 ret값을 반환한다.
public int removeElement(int position)
{
    int ret = ERROR_NUM;	// 기본 return 값을 ERROR_NUM으로 설정

    if (isEmpty()) {	// 배열이 비었을 경우
        System.out.println("Array is empty");
        return ret;
    }

    else if (position < 0 || position > count-1) {	// 배열의 index 값이 0보다 작거나 마지막 요소의 인덱스 보다 큰 값을 꺼내려는 경우
        return ret;
    }

    ret = intArr[position];

    for( int i = position ; i < count-1 ; i++ ) {	// 요소의 이동
        intArr[i] = intArr[i+1];
    }
    count--;
    return ret;
}

 

MyArrayTest.java
package ch02;

public class MyArrayTest {

	public static void main(String[] args) {
		
		MyArray myarray = new MyArray(5);
		myarray.addElement(10);
		myarray.addElement(20);
		myarray.addElement(30);
		myarray.addElement(40);
		
		System.out.println(myarray.removeElement(0));
		System.out.println(myarray.removeElement(0));
		System.out.println(myarray.removeElement(0));
		System.out.println(myarray.removeElement(0));
		System.out.println(myarray.removeElement(0));	// 배열이 비었을 경우 출력
	}

}

 

수행 결과
10
20
30
40
Array is empty
-999999999
저작자표시 비영리 변경금지 (새창열림)

'Java & Kotlin' 카테고리의 다른 글

[Java 자료구조] 연결 리스트 구현해보기  (0) 2022.02.07
[Java 자료구조] 여러가지 자료 구조 (2)  (2) 2022.02.06
[Java 자료구조] 여러가지 자료구조 (1)  (0) 2022.02.05
'Java & Kotlin' 카테고리의 다른 글
  • [Java 자료구조] 스택 구현해보기
  • [Java 자료구조] 연결 리스트 구현해보기
  • [Java 자료구조] 여러가지 자료 구조 (2)
  • [Java 자료구조] 여러가지 자료구조 (1)
Sue
Sue
개발 공부 로그
  • Sue
    Sue's devlog
    Sue
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sue
[Java 자료구조] 배열 구현해보기
상단으로

티스토리툴바