자바/자바 기초

자바 배열과 컬렉션 프레임워크 기초 완벽 가이드

끄적인다 2025. 4. 22. 23:21
반응형

자바에서 데이터를 다룰 때 가장 기본이 되는 것이 **배열(Array)**이며, 더 복잡한 자료 구조를 효율적으로 관리할 수 있게 도와주는 것이 **컬렉션 프레임워크(Collection Framework)**입니다. 이 글에서는 배열과 컬렉션의 기본 개념과 차이점, 그리고 각각의 사용법을 예제를 중심으로 쉽게 정리합니다.


📦 1. 배열(Array)이란?

배열은 같은 타입의 데이터를 고정된 크기로 저장할 수 있는 자료 구조입니다.

✅ 배열 선언과 초기화

int[] numbers = new int[5]; // 정수형 배열 선언
String[] names = {"철수", "영희", "민수"}; // 문자열 배열 초기화

✅ 배열 요소 접근

배열의 인덱스는 0부터 시작합니다.

System.out.println(names[1]); // "영희" 출력

✅ 배열의 한계

  • 크기가 고정되어 변경 불가능
  • 삽입/삭제가 비효율적
  • 다양한 자료형 혼합 불가

그래서 등장한 것이 컬렉션 프레임워크입니다!


📚 2. 컬렉션 프레임워크란?

컬렉션 프레임워크는 데이터 그룹을 효율적으로 저장하고 처리할 수 있는 클래스들의 집합입니다. 배열보다 유연하고 다양한 기능을 제공합니다.

🌳 주요 인터페이스

인터페이스설명대표 구현 클래스

List 순서 있고 중복 허용 ArrayList, LinkedList
Set 순서 없고 중복 허용 안 함 HashSet, TreeSet
Map 키-값 쌍 저장 HashMap, TreeMap

📝 3. List 예제 - ArrayList

순서가 있고, 중복된 값을 저장할 수 있습니다.

import java.util.ArrayList;

ArrayList<String> list = new ArrayList<>();
list.add("사과");
list.add("바나나");
list.add("사과");

System.out.println(list); // [사과, 바나나, 사과]

🔹 주요 메서드

  • add(값): 값 추가
  • get(인덱스): 값 조회
  • remove(인덱스/값): 값 제거
  • size(): 전체 크기

🌿 4. Set 예제 - HashSet

중복을 허용하지 않고, 순서를 보장하지 않습니다.

import java.util.HashSet;

HashSet<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java"); // 중복

System.out.println(set); // [Java, Python] (순서는 랜덤)

🧭 5. Map 예제 - HashMap

Key-Value 구조로 데이터를 저장합니다.

import java.util.HashMap;

HashMap<String, Integer> scores = new HashMap<>();
scores.put("철수", 90);
scores.put("영희", 85);
scores.put("철수", 95); // 기존 값 덮어씀

System.out.println(scores); // {영희=85, 철수=95}

🔹 주요 메서드

  • put(키, 값): 데이터 삽입
  • get(키): 값 조회
  • remove(키): 항목 제거
  • containsKey(키): 키 존재 여부 확인

✅ 배열 vs 컬렉션 정리

항목 배열 컬렉션 프레임워크
크기 변경 불가능 가능 (자동 확장)
자료형 하나만 저장 다양한 객체 저장 가능
삽입/삭제 비효율적 효율적 (내부 구현 최적화)
주요 사용처 고정 데이터 처리 동적 데이터 처리

🏁 마무리

  • 배열은 간단한 구조에 적합하지만 기능은 제한적입니다.
  • 컬렉션 프레임워크는 다양한 요구에 맞춰 유연하고 강력한 자료 구조를 제공합니다.

자바 프로그래밍에서 데이터를 다루는 모든 기본은 여기서 시작되므로, 배열과 컬렉션의 구조와 차이를 정확히 이해하고 있어야 합니다. 다음 단계로는 각 컬렉션의 성능 차이와 활용 예제를 연습해보세요! 🚀

반응형