배열

SR Lee·2023년 3월 24일
0

자료구조

목록 보기
1/4

배열

정의: 메모리에 연속공간으로 저장하는 데이터 ”물리적으로 붙어 있다“

생성할 때, 미리 길이를 정해서 생성해준다 (자바 배열 참고)

Array 생성 & for each:

public class Main {

    public static void main(String[] args) {

//      1차원 배열 생성 & for each 
        int[] arr1 = {1, 2, 3, 4, 5};

        for (int array: arr1) {
            System.out.println("array = " + array);
        }

//      2차원 배열 생성 & for each 
        int[][] arr2 = {{1, 2, 3}, {4, 5, 6}};

        for(int[] row: arr2) { 
           for(int array: row) {     
              System.out.println("array = " + array);
            }
        }

ArrayList

ArrayList 란?

Array와 다르게, 크기 미리 설정 필요 없고 후에 더하고/뺄 수 있는 클래스. 즉, “resizable” array.

import java.util.ArrayList;  //import ArrayList Class
import java.util.Arrays;
ArrayList list1 = new ArrayList(Arrays.asList(1, 2, 3)); //Create ArrayList Object
ArrayList<String> names = new ArrayList<String>(); //Create ArrayList Object, but for String

.add( x ) → 원소 쓰면 끝에 추가 & 배열 쓰는것도 가능하다! (list2d 배열에 list1d1 + list1d2 .add 해주니 2차원 배열 되었다)

.remove( y ) → index number 위치의 원소 제거

.remove(Integer.valueOf( )) → 지정된 원소 제거


//      ArrayList - 1차원
        ArrayList list1 = new ArrayList(Arrays.asList(1, 2, 3));
      
        list1.add(5);                     // {1, 2, 3, 5}
        list1.remove(2);                  // {1, 2, 5}
        list1.remove(Integer.valueOf(2)); // {1, 5}

 //     ArrayList - 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);
        System.out.println("list1d1 = " + list1d1);
        System.out.println("list1d2 = " + list1d2);
        System.out.println("list2d = " + list2d);
    }
}

배열 특징

“연속저장“ 특징 덕분에 자료 수정 (삭제/추가)가 어렵고, 메모리 사용이 비효율적이나, 자료 access는 더 빠르다.

  • 추가 삭제가 번거로운 이유 (ft. 메모리 사용이 비효율적): 크기를 변경할 때마다 새로운 배열 생성해야 하고, 삭제의 경우 빈 공간을 남겨야 해서.
  • 자료 access가 빠른 이유: 컴퓨터는 메모리 올릴 때 chunk로 올려 인접한 메모리 읽는 것이 빠르다. 그리고 배열은 연결된 chunk 로 data를 저장해서 빠르다.
profile
studying backend

0개의 댓글