본문 바로가기
Java

[JAVA] 자바 - 배열 구현하기

by Seong-Jun 2022. 1. 4.
728x90
반응형
SMALL

배열 구현하기

배열의 특징

  • 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조입니다.
  • 정해진 크기가 있습니다.
  • 요소의 추가와 제거 시 다른 요소들의 이동이 필요합니다.
  • 배열의 i번째 요소를 찾는 인덱스 연산이 빠릅니다.
  • jdk클래스 : ArrayList, Vector

배열 구현

MyArray.java

public class MyArray {
	int[] intArr;
	int count; // 개수
	
	public int ARRAY_SIZE;
	public static final int ERROR_NUM = -9999999;
	
	public MyArray() {
		count = 0;
		ARRAY_SIZE = 10;
		intArr = new int[ARRAY_SIZE];
	}
	
	public MyArray(int size) {
		count = 0;
		ARRAY_SIZE = size;
		intArr = new int[size];
	}
	
	public void addElement(int num) {
		if(count >= ARRAY_SIZE) {
			System.out.println("not enough memory");
			return;
		}
		intArr[count++] = num;
	}
	
	public void insertElement(int position, int num) {
		// 이동의 수는 요소의 개수에 비례하게 됨.
		// 개수는 고려하지 않는다. 차수만 고려한다.
		
		int i;
		
		if(position < 0 || position > count) {
			return;
		}
		
		if (count >= ARRAY_SIZE) {
			return;
		}
		
		for(i = count-1; i >= position; i--) {
			intArr[i+1] = intArr[i];
		}
		
		intArr[position] = num;
		count++;
	}
	
	public int removeElement(int position) {
		int ret = ERROR_NUM;
		
		if(isEmpty()) {
			System.out.println("Array is empty");
			return ret;
		}
		if(position < 0 || position > count - 1) {
			return ret;
		}
		
		ret = intArr[position];
		
		for(int i = position; i < count - 1; i++) {
			intArr[i] = intArr[i+1];
		}
		count--;
		
		return ret;
	}
	
	public int getSize() {
		return count;
	}
	
	public boolean isEmpty() {
		if(count == 0) {
			return true;
		}
		else return false;
	}
	
	public int getElement(int position)
	{
		if(position < 0 || position > count-1){
			System.out.println("검색 위치 오류. 현재 리스트의 개수는 " + count +"개 입니다.");
			return ERROR_NUM;
		}
		return intArr[position];
	}
	
	public void printAll()
	{
		if(count == 0){
			System.out.println("출력할 내용이 없습니다.");
			return;
		}
			
		for(int i=0; i<count; i++){
			System.out.println(intArr[i]);
		}
		
	}
	
	public void removeAll()
	{
		for(int i=0; i<count; i++){
			intArr[i] = 0;
		}
		count = 0;
	}
}

 

MyArrayTest.java

public class MyArrayTest {

	public static void main(String[] args) {
		MyArray array = new MyArray();
		array.addElement(10);
		array.addElement(20);
		array.addElement(30);
		array.insertElement(1, 50);
		array.printAll();
		
		System.out.println("===============");
		array.removeElement(1);
		array.printAll();
		System.out.println("===============");
			
		array.addElement(70);
		array.printAll();
		System.out.println("===============");
		array.removeElement(1);
		array.printAll();
		
		System.out.println("===============");
		System.out.println(array.getElement(2));
	}

}

 

출력결과

10
50
20
30
===============
10
20
30
===============
10
20
30
70
===============
10
30
70
===============
70

 

728x90
반응형
LIST

댓글