본문 바로가기
JAVA

Java Collection 간단 정리

by 얍얍1234 2023. 9. 19.

자바의 Collections Framework는 데이터를 저장, 관리 및 처리하는데 필요한 다양한 데이터 구조와 알고리즘을 제공하는 핵심 라이브러리입니다. 이 글에서는 Java Collections Framework의 개념, 주요 인터페이스와 클래스, 그리고 실제 활용 사례에 대해 간단히 알아보겠습니다.

1. Collections Framework란?

Java Collections Framework는 자바 표준 라이브러리 중 하나로, 데이터를 저장하고 처리하는데 필요한 클래스와 인터페이스의 모음입니다. 이 프레임워크는 데이터를 구조화하고 효율적으로 다룰 수 있는 다양한 컬렉션 클래스를 제공하여 개발자들이 데이터를 쉽게 다룰 수 있도록 도와줍니다.

Collections Framework의 주요 목표는 다음과 같습니다.

- 데이터 구조화 및 저장: 데이터를 효율적으로 저장하고 관리할 수 있는 다양한 컬렉션 클래스를 제공합니다.
- 데이터 처리 및 조작: 데이터를 쉽게 검색, 정렬, 필터링, 변환 등 다양한 작업을 수행할 수 있는 메서드와 알고리즘을 제공합니다.
- 타입 안정성: 제네릭을 활용하여 데이터 타입 안정성을 보장합니다.
- 상호 호환성: 모든 컬렉션 클래스는 일관된 인터페이스를 구현하므로, 서로 교환 가능하고 확장 가능합니다.

 


2. 주요 인터페이스와 클래스

2.1. Collection 인터페이스


Collection 인터페이스는 모든 컬렉션 클래스의 최상위 인터페이스로, 데이터를 저장하고 관리하기 위한 기본적인 메서드를 정의합니다. List, Set, Queue 등 다양한 하위 인터페이스를 포함하고 있습니다.

- List: 순서가 있는 데이터를 저장하는 인터페이스로, 중복 요소를 허용합니다. 주요 구현체로 ArrayList, LinkedList, Vector 등이 있습니다.
- Set: 중복 요소를 허용하지 않는 집합 형태의 인터페이스로, 순서가 정해져 있지 않습니다. 주요 구현체로 HashSet, LinkedHashSet, TreeSet 등이 있습니다.
- Queue: 큐 자료구조를 표현하는 인터페이스로, 요소를 추가하고 제거하는데 특화되어 있습니다. 주요 구현체로 PriorityQueue, LinkedList 등이 있습니다.

 


2.2. Map 인터페이스

Map 인터페이스는 키-값 쌍을 저장하는 인터페이스로, 데이터를 검색 및 관리하기 위한 기본 메서드를 정의합니다. 주요 구현체로 HashMap, LinkedHashMap, TreeMap, HashTable 등이 있습니다.


2.3. 다양한 구현 클래스


- ArrayList: 크기를 동적으로 조정할 수 있는 배열 기반의 리스트 구현체로, 빠른 랜덤 액세스를 제공합니다.
- LinkedList: 이중 연결 리스트로 구현된 리스트 구현체로, 요소의 추가 및 삭제가 빠르며, 순차 액세스에 적합합니다.
- HashSet: 해시 테이블을 기반으로 중복 요소를 허용하지 않는 집합 구현체로, 순서가 정해져 있지 않습니다.
- TreeSet: 이진 검색 트리를 기반으로 중복 요소를 허용하지 않는 집합 구현체로, 요소들이 정렬되어 있습니다.
- HashMap: 해시 테이블을 기반으로 키-값 쌍을 저장하는 맵 구현체로, 빠른 검색과 삽입이 가능합니다.
- TreeMap: 이진 검색 트리를 기반으로 키-값 쌍을 저장하는 맵 구현체로, 키들이 정렬되어 있습니다.

 


3. Collections Framework의 활용

3.1. 데이터 저장 및 관리

List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");

Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);



3.2. 데이터 처리 및 조작

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

// 데이터 필터링
List<Integer> evenNumbers = numbers.stream()
                                    .filter(n -> n % 2 == 0)
                                    .collect(Collectors.toList());

// 데이터 정렬
Collections.sort(evenNumbers);

// 데이터 변환
List<String> numberStrings = evenNumbers.stream()
                                        .map(Object::toString)
                                        .collect(Collectors.toList());


3.3. 타입 안정성

List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");

// 컴파일 에러: names.add(123);  // 타입 불일치로 인한 컴파일 에러



3.4. 상호 호환성

List<String> list = new ArrayList<>();
list.add("Alice");
list.add("Bob");

Set<String> set = new HashSet<>(list);  // 리스트를 세트로 변환



4. 결론

Java Collections Framework는 Java 개발에서 빈번하게 사용되며, 데이터 구조화와 처리에 필수적인 라이브러리 중 하나입니다. 다양한 컬렉션 클래스와 인터페이스를 활용하여 데이터를 효율적으로 다룰 수 있으며, 타입 안정성과 상호 호환성을 제공합니다. 개발자는 Collections Framework를 숙지하여 데이터 관리와 처리를 더욱 효율적으로 수행할 수 있으며, Java 언어의 강력한 기능 중 하나를 활용할 수 있습니다.

 

뿐만 아니라, Collections Framework는 다양한 애플리케이션과 상황에서 사용됩니다. 예를 들어, 데이터베이스에서 조회한 결과를 컬렉션으로 저장하고 처리하는 데 활용할 수 있습니다. 또한, 웹 애플리케이션 개발에서 HTTP 요청의 파라미터나 세션 데이터를 다루는 데에도 유용하게 쓰입니다. 게다가, 대규모 데이터베이스 시스템에서는 데이터 캐싱과 같은 성능 향상을 위해 Collections Framework를 활용하는 경우도 많습니다.

Java Collections Framework는 다른 프로그래밍 언어에서도 영감을 받아 유사한 데이터 구조를 제공하는 경우가 많습니다. 이를 통해 Java 개발자는 다양한 언어로 이식 가능한 경험을 쌓을 수 있으며, 다른 개발자들과 협업할 때에도 공통된 이해와 지식을 공유할 수 있습니다.

마지막으로, Collections Framework는 학습 곡선이 다소 가파르지만, 한 번 익숙해지면 개발 생산성을 크게 향상시킬 수 있는 강력한 도구입니다. 데이터를 효율적으로 다루고 다양한 알고리즘을 활용할 수 있는 능력은 개발자로서의 역량을 한 단계 업그레이드하는데 큰 도움을 줄 것입니다. Java Collections Framework를 깊이 있게 학습하고 활용하는 것은 모든 Java 개발자에게 권장되는 습관 중 하나이며, 미래의 프로젝트에서 큰 장점을 제공할 것입니다.

 

 

 

'JAVA' 카테고리의 다른 글

Java 추상클래스 를 알아보자  (0) 2023.09.24
Java 멀티 쓰레드 간단히 알아보자  (2) 2023.09.24
Java Optional 간단 정리  (0) 2023.09.18
Java Spring 에 대해 알아보자  (0) 2023.09.18
Java Stream 에 대해 알아보자  (0) 2023.09.13