728x90
반응형
💡배열(Array)의 특징
- 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조
- 정해진 크기
- 요소의 추가, 제거 시 다른 요소들의 이동이 필요함
- 배열의 N 번째 요소를 찾는 인덱스 연산이 빠름
- jdk 클래스
- ArrayList, Vector
🔨 Array 구현
- MyArray.java
package ch02;
public class MyArray {
int[] intArr; //int array
int count; //개수
public int ARRAY_SIZE;
public static final int ERROR_NUM = -999999999;
public MyArray()
{
//디폴트 생성자
count = 0; //요소의 개수
ARRAY_SIZE = 10; //배열의 크기
intArr = new int[ARRAY_SIZE]; //ARRAY_SIZE 만큼 배열 생성
}
public MyArray(int size)
{
//size 매개변수를 입력받는 생성자
count = 0; //요소의 개수
ARRAY_SIZE = size; //배열의 크기 설정
intArr = new int[size]; //size 만큼의 배열 생성
}
public void addElement(int num)
{
//배열의 요소를 추가하는 메소드
if(count >= ARRAY_SIZE){
//만약 요소의 개수가 지정된 배열의 크기보다 크거나 같으면 에러 출력 [꽉찬 경우]
System.out.println("not enough memory");
return;
}
//현재 요소 개수에 해당하는 자리에 넣고 count 1 증가
intArr[count++] = num;
}
public void insertElement(int position, int num)
{
//특정 위치에 요소를 추가하는 메소드
int i;
if(count >= ARRAY_SIZE){ //꽉 찬 경우
System.out.println("not enough memory");
return;
}
if(position < 0 || position > count ){ //index error
System.out.println("insert Error");
return;
}
for( i = count-1; i >= position ; i--){
//배열의 제일 끝 부분부터 삽입할 위치(position)까지 1씩 감소하면서
intArr[i+1] = intArr[i]; // 하나씩 이동 // [i]에 있는 요소를 [i+1] 에 이동
}
//넣고자 하는 위치(position)에 요소 값 넣기
intArr[position] = num;
count++; //요소의 수 1 증가
}
public int removeElement(int position)
{
//특정 위치의 요소를 제거하는 메소드
int ret = ERROR_NUM;
//배열이 비어있다면
if( isEmpty() ){
System.out.println("There is no element");
return ret;
}
//Index Error 에러 처리
if(position < 0 || position >= count ){ //index error
System.out.println("remove Error");
return ret;
}
//제거할 위치의 요소를 ret 변수에 저장
ret = intArr[position];
for(int i = position; i<count -1; i++ )
{
//제거할 위치부터 배열의 제일 마지막 위치까지 1씩 증가
intArr[i] = intArr[i+1]; // 하나씩 이동 // [i+1]에 있는 요소를 [i]에 이동
}
count--; //요소의 수 1 감소
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;
}
}
- MyAraayTest.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));
}
}
728x90
반응형
'Java' 카테고리의 다른 글
[Java] 스택(Stack) 구현 (0) | 2023.01.08 |
---|---|
[Java] 연결 리스트(LinkedList) (0) | 2023.01.03 |
[JAVA] String, String Builder, String Text Block (0) | 2022.04.13 |
[JAVA] Collections Framework - Arrays (0) | 2022.04.01 |
[JAVA] Stack vs Queue (0) | 2022.03.29 |