Array & ArrayList❓

2024. 5. 22. 22:22·Language/Java

Array❓

  • Array는 같은 타입의 데이터를 연속된 공간에 나열
  • 각 데이터에 인덱스(index)를 부여해놓은 자료구조

arrayImg

Array 특징

  • 배열은 같은 타입의 데이터만 저장 가능
  • 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없음

Array 장점 및 단점

장점

  • 빠른 접근: 배열은 인덱스를 사용하기 때문에 인덱스를 알고 있다면 원하는 위치에 O(1)에 접근 가능
  • 다차원 배열: 배열은 다차원으로 선언 가능
  • 메모리 공간의 효율성: 연속된 메모리 공간에 요소를 저장하므로, 메모리 공간을 효율적으로 사용 가능, 또한 배열의 요소들은 순서대로 저장되기 때문에 캐시 지역성이 좋아 성능 향상에 도움이 됨

단점

  • 크기 제한: 배열은 생성할 때 크기를 정하고 후에 변경이 불가함 (크기를 동작으로 제어 불가)
  • 삽입과 삭제 비용이 큼: 배열의 중간에 요소를 삽입하려면 해당 위치 이후의 요소들을 모두 이동시키기 때문에 O(n)의 시간 복잡도를 가짐

Array 사용법

Array 선언

int[] intArr = {};                    // 값과 사이즈 모두 없는 빈 배열 선언
int[] intArr2 = new int[3];            // 사이즈는 존재하지만 값이 없는 빈 배열
int[] intArr3 = {1, 2, 3, 4, 5};    // 사이즈가 자동 지정된 값이 있는 배열

 

Array 사용

int[] intArr3 = {1, 2, 3, 4, 5};

int idx3 = intArr3[3];            // 배열의 값 참조
int arrLen = intArr3.length;     // 배열의 길이 반환

// 배열의 원소 접근 (for 문)
for(int i = 0; i < arrLen; ++i) {
    System.out.println(intArr3[i]);
}

// 배열의 원소 접근 (for each 문)
for(int elem: intArr3) {
    System.out.println(elem);
}

 


ArrayList❓

  • Array는 정적인 크기를 가지고 있기 때문에 크기 변경 불가
  • 배열의 크기를 동적으로 변경할 수 있도록 Java에서 제공해주는 클래스

ArrayList 특징

  1. 동적 크기 조정
    • ArrayList는 내부적으로 배열을 사용
    • 요소를 추가하거나 삭제할 때 필요에 따라 크기를 동적으로 조정
    • 크기 제한이 없고, 유연하게 요소를 관리 할 수 있음
  2. 요소 접근
    • 배열과 마찬가지로 인덱스를 사용해 요소 접근 가능
    • 인덱스를 사용하여 요소에 빠르게 접근 가능
  3. 제네릭 타입
    • 제네릭을 사용해서 타입 안정성을 제공
    • 잘못된 타입의 요소 추가 방지
  4. 여러 메소드 제공
    • ArrayList는 배열을 다루기 위한 여러 메소드를 제공해주기 때문에 다루기가 더 용이함

 

ArrayList 사용법

ArrayList 선언

import java.util.ArrayList;

List<Integer> list = new ArrayList<>();

 

ArrayList 값 추가

List<Integer> list = new ArrayList<>();

list.add(1);        // list에 1 추가
list.add(2);        // list에 2 추가
list.add(3);        // list에 3 추가

list.add(1, 15);    // 1번째 인덱스 위치에 15 추가

list.set(1, 50);     // 1번째 인덱스에 있는 값 50으로 변경

 

ArrayList 값 삭제

List<Integer> list = new ArrayList<>();

list.remove();         // list의 마지막 요소 삭제
list.remove(0);        // list의 0번째 요소 삭제

 

ArrayList 요소 접근

List<Integer> list = new ArrayList<>();

list.get(0);        // 0번째 인덱스에 있는 값 접근
list.indexOf(3)        // 3이 저장되어 있는 인덱스 반환

 

ArrayList 기타 메서드

List<Integer> list = new ArrayList<>();

list.size();                                // list의 크기 출력
list.isEmpty();                                // list가 비었으면 true, 그렇지 않으면 false 반환
list.contains(1)                            // list가 1 값을 가지고 있으면 true, 없으면 false 반환
list.clear();                                 // list에 들어있는 모든 값 초기화

List<Integer> newList = list.subList(1,3);    // list의 부분 요소만 이용하여 새로운 배열 생성 (index: 1~2)

Collections.sort(list);                        // list 오름차순 정렬

 


Reference

https://hoehen-flug.tistory.com/28
https://junjangsee.github.io/2019/07/25/java/arraylist-Method/

'Language > Java' 카테고리의 다른 글

Heap❓  (0) 2024.05.26
LinkedList❓  (0) 2024.05.24
HashMap❓  (0) 2024.05.24
Queue❓  (0) 2024.05.21
Stack  (0) 2024.05.20
'Language/Java' 카테고리의 다른 글
  • LinkedList❓
  • HashMap❓
  • Queue❓
  • Stack
m5n
m5n
  • m5n
    m5n
    m5n
  • 전체
    오늘
    어제
    • 분류 전체보기 (16)
      • 기록 (0)
      • Language (6)
        • Java (6)
        • Python (0)
      • Spring (0)
      • Aws (0)
      • Git (0)
      • FE (2)
        • JavaScript (2)
      • BE (4)
        • HTTP (4)
      • PS (3)
        • 백준 (2)
        • 프로그래머스 (0)
        • Sql (1)
      • 기술서적 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
m5n
Array & ArrayList❓
상단으로

티스토리툴바