JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

카테고리 없음

배열 크기 조정의 비효율성

lamarcK 2025. 5. 10. 01:25

1. 메모리 낭비

// 기존 배열
[1][2][3][4][5][6][7][8][9][10] // 40바이트

// 새 배열 생성 시
[1][2][3][4][5][6][7][8][9][10][][][][][][][][][][] // 80바이트
// 실제 사용하지 않는 공간이 많이 생김

2. 성능 이슈

- 새 배열 생성 시간
- 데이터 복사 시간
- 기존 배열 메모리 해제 시간

3. 해결 방안들:

// 1. 초기 용량을 적절히 설정
ArrayList<Integer> list = new ArrayList<>(100);  // 처음부터 크게

// 2. 증가 비율 조절 (ArrayList는 1.5배씩 증가)
int newCapacity = oldCapacity + (oldCapacity >> 1);

// 3. LinkedList 사용
// 동적 크기 조절이 필요 없음
LinkedList<Integer> list = new LinkedList<>();

이런 이유로:

  • 데이터 크기를 예측할 수 있다면 초기 용량 지정
  • 크기 변동이 잦다면 LinkedList 고려
  • ArrayList는 크기 변동은 비효율적이지만 접근이 빠름

상황에 따라 적절한 자료구조를 선택하는 것이 중요합니다.