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
'Java' 카테고리의 다른 글
[JAVA] 자바 - 스택(Stack) 구현하기 (0) | 2022.01.05 |
---|---|
[JAVA] 자바 - 연결리스트(LinkedList) 구현하기 (0) | 2022.01.04 |
[JAVA] 자바 - 자료구조 (0) | 2022.01.04 |
[JAVA] 자바 - Class 클래스 사용하기 (0) | 2022.01.04 |
[JAVA] 자바 - String, StringBuilder, StringBuffer 클래스, text block (0) | 2021.12.14 |
댓글