Java
[Java] 컬렉션 (Collection)
지금회
2023. 12. 12. 11:27
728x90
소개:
Java Collection Framework은 자료를 효과적으로 저장하고 관리하기 위한 다양한 자료 구조를 제공하는 라이브러리입니다. 이 글에서는 Java의 Collection Framework에 대해 소개하고, 주요 인터페이스와 구현체, 그리고 각각의 특징에 대해 알아보겠습니다.
1. Collection Framework 개요
- 컬렉션 프레임워크란?
- Java Collection Framework은 데이터를 저장하고 처리하는 데에 필요한 클래스와 인터페이스를 제공하는 라이브러리입니다.
- 자료 구조를 효율적으로 활용하고, 데이터를 다루는 데 필요한 다양한 기능을 제공합니다.
- 주요 인터페이스:
Collection
: 모든 컬렉션 클래스가 구현해야 하는 기본 인터페이스로, 컬렉션의 기본 동작을 정의합니다.List
: 순서가 있는 자료를 저장하는데 사용되는 인터페이스로, 중복을 허용합니다.Set
: 중복을 허용하지 않는 자료를 저장하는데 사용되는 인터페이스입니다.Map
: Key-Value 쌍의 자료를 저장하는데 사용되는 인터페이스입니다.
2. 주요 구현체
- List 인터페이스의 구현체:
ArrayList
: 가변 크기의 배열로 구현된 리스트입니다.LinkedList
: 이중 연결 리스트로 구현된 리스트로, 요소의 추가 및 삭제가 빠릅니다.Vector
: 고전적인 동기화된 리스트입니다.
- Set 인터페이스의 구현체:
HashSet
: 해시 테이블을 사용하여 구현된 집합으로, 순서를 보장하지 않습니다.LinkedHashSet
: 연결 리스트로 이루어진 해시 테이블로, 삽입 순서를 보장합니다.TreeSet
: 이진 검색 트리로 구현된 집합으로, 정렬된 순서를 가집니다.
- Map 인터페이스의 구현체:
HashMap
: 해시 테이블을 사용하여 구현된 맵으로, 키-값 쌍을 저장합니다.LinkedHashMap
: 연결 리스트로 이루어진 해시 테이블로, 삽입 순서를 보장합니다.TreeMap
: 이진 검색 트리로 구현된 맵으로, 키에 대한 정렬된 순서를 가집니다.
3. 컬렉션 프레임워크 활용 예시
- ArrayList 활용:
List<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie");
- HashSet 활용:
Set<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(2); numbers.add(3);
- HashMap 활용:
Map<String, Integer> ageMap = new HashMap<>(); ageMap.put("Alice", 25); ageMap.put("Bob", 30); ageMap.put("Charlie", 28);
4. 주요 메서드와 기능
- 반복문을 통한 요소 접근:
for (String name : names) { System.out.println(name); }
- 검색과 정렬:
Collections.sort(names); int index = Collections.binarySearch(names, "Charlie");
- 동기화된 컬렉션:
List<String> synchronizedList = Collections.synchronizedList(new ArrayList<>());
5. 컬렉션 프레임워크의 활용 팁
- Generics 활용:
- 컬렉션은 Generics를 사용하여 타입 안정성을 확보할 수 있습니다.
- 불변(Immutable) 컬렉션 활용:
Collections.unmodifiableXXX()
메서드를 사용하여 불변 컬렉션을 생성할 수 있습니다.
- 스트림(Stream) API 활용:
- Java 8부터 도입된 스트림 API를 활용하여 컬렉션을 다룰 수 있습니다.
6. 결론
Java Collection Framework은 다양한 자료 구조를 제공하여 프로그래머가 효과적으로 데이터를 다룰 수 있게 해주는 강력한 도구입니다. 올바른 자료 구조와 구현체의 선택은 성능과 코드 가독성을 향상시키는데 중요한 역할을 합니다. 이를 통해 개발자는 다양한 상황에서 최적의 자료 구조를 선택하여 효율적인 코드를 작성할 수 있습니다.
728x90