지금을 사는 사람

[Java] 컬렉션 (Collection) 본문

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

'Java' 카테고리의 다른 글

[Java] 애노테이션(Annotation)  (0) 2023.12.15
[Java] JVM (Java Virtual Machine)  (0) 2023.12.12
[Java] 리터럴 풀 (literal pool)  (0) 2023.12.12
[Java] 람다 표현식(Lambda)  (1) 2023.12.07
[Java] 익명 클래스(Anonymous Class)  (1) 2023.12.07