📗 Docs

배열(Array)

파일과 미디어
date
Apr 14, 2023
slug
Algorithm-Array
author
status
Public
tags
Algorithm
Java
summary
Array 기본 개념 정리
type
Post
thumbnail
category
📗 Docs
updatedAt
Apr 13, 2023 05:28 PM

배열(Array)

  • 많은 수의 데이터를 다룰 때 사용하는 자료 구조
  • 각 데이터를 인덱스와 1:1 대응 하도록 구성
  • 데이터가 메모리 상에 연속적으로 저장
notion image

배열의 장점

  • 인덱스를 이용하여 데이터에 빠르게 접근 가능
notion image

배열의 단점

  • 데이터의 추가/삭제가 번거로운 편
    • 미리 최대 길이를 정해서 생성해야 함
    • 가변 길이 배열은 배열의 크기를 변경할 때마다 새로운 배열을 생성
    • 데이터 삭제 시 인덱스를 유지하기 위해 빈 공간 유지
notion image

배열 선언/할당

// 1차원 배열
int[] arr = {1,2,3,4,5};

// 2차원 배열
int[][] arr2 = {{1,2,3,},{4,5,6},{7,8,9}}

// Arraylist - 1차원, 2차
ArrayList list2d = new ArrayList();
ArrayList list1d1 = new ArrayList(Arrays.asList(1, 2, 3));
ArrayList list1d2 = new ArrayList(Arrays.asList(4, 5, 6));
list2d.add(list1d1);
list2d.add(list1d2);
 

 

배열 데이터 삽입 및 삭제

//  배열에 데이터 삽입
    public void insertData(int index, int data) {
        if (index < 0 || index > this.arr.length) {
            System.out.println("Index Error");
            return;
        }
        int[] arrDup = this.arr.clone();
        this.arr = new int[this.arr.length + 1];

        for(int i = 0; i < index; i++){
            this.arr[i] = arrDup[i];
        }
        for(int i = index + 1; i < this.arr.length; i++){
            this.arr[i] = arrDup[i-1];
        }
        this.arr[index] = data;
    }


    //  배열에서 특정 데이터 삭제
    public void removeData(int data) {
        int targetIndex = -1;
        for (int i = 0; i < this.arr.length; i++) {
            if (this.arr[i] == data) {
                targetIndex = i;
                break;
            }
        }
        if (targetIndex == -1) {
            System.out.println("해당 데이터가 없습니다.");
        } else {
            int[] arrDup = this.arr.clone();
            this.arr = new int[this.arr.length - 1];
            for (int i = 0; i < targetIndex; i++) {
                this.arr[i] = arrDup[i];
            }
            for (int i = targetIndex + 1; i < this.arr.length; i++) {
                this.arr[i] = arrDup[i + 1];
            }
        }
    }