본문 바로가기
GD's IT Lectures : 기초부터 시리즈/자바(JAVA) 기초부터 ~

[자바(JAVA)] 컬렉션 프레임워크

by GDNGY 2023. 4. 28.

15. 컬렉션

컬렉션 프레임워크란, 데이터 구조와 알고리즘을 제공하는 자바의 표준 라이브러리로서, 개발자들이 데이터를 효과적으로 저장, 관리, 조작할 수 있도록 도와주는 일련의 클래스와 인터페이스의 모음입니다. 

 

15.1. 컬렉션 프레임워크 개요

컬렉션 프레임워크는 여러 개의 데이터를 저장하고 관리하기 위한 표준화된 클래스들의 집합입니다. 자바에서는 주로 List, Set, Map이라는 인터페이스를 기반으로 한 클래스들을 제공하고 있습니다. 컬렉션 프레임워크를 사용하면 데이터를 효율적으로 저장, 검색, 삭제, 정렬 등 다양한 연산을 수행할 수 있습니다.

 

15.2. List, Set, Map 인터페이스
  • List: 순서가 있는 데이터를 저장하는 인터페이스로, 중복된 데이터를 허용합니다. 주요 메서드로는 add(), get(), remove(), size() 등이 있습니다.
  • Set: 순서가 없으며 중복된 데이터를 허용하지 않는 인터페이스입니다. 주요 메소드로는 add(), remove(), contains(), size() 등이 있습니다.
  • Map: 키와 값의 쌍으로 이루어진 데이터를 저장하는 인터페이스로, 키는 중복될 수 없지만 값은 중복될 수 있습니다. 주요 메서드로는 put(), get(), remove(), keySet(), values() 등이 있습니다.
15.3. ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap 사용
  • ArrayList: 가변 크기의 배열을 구현한 List 인터페이스 구현 클래스로, 인덱스를 사용해 데이터에 빠르게 접근할 수 있습니다.
  • LinkedList: 이중 연결 리스트를 구현한 List 인터페이스 구현 클래스로, 데이터 삽입 및 삭제가 빠르지만, 인덱스를 사용한 데이터 접근은 상대적으로 느립니다.
  • HashSet: 해시 테이블을 사용한 Set 인터페이스 구현 클래스로, 데이터의 중복을 허용하지 않으며, 검색 속도가 빠릅니다.
  • TreeSet: 이진 검색 트리를 사용한 Set 인터페이스 구현 클래스로, 데이터의 중복을 허용하지 않고 정렬된 순서로 저장됩니다.
  • HashMap: 해시 테이블을 사용한 Map 인터페이스 구현 클래스로, 키-값 쌍의 데이터를 빠르게 저장 및 검색할 수 있습니다.
  • TreeMap: 이진 검색 트리를 사용한 Map 인터페이스 구현 클래스로, 키-값 쌍의 데이터를 정렬된 순서로 저장하며, 범위 검색이 가능합니다.
15.4. 컬렉션 관련 유틸리티 클래스
  • Collections: 컬렉션과 관련된 다양한 유틸리티 메소드를 제공하는 클래스입니다. 정렬, 검색, 동기화, 불변 컬렉션 생성 등의 기능을 제공합니다. 주요 메서드로는 sort(), binarySearch(), reverse(), synchronizedList(), unmodifiableList() 등이 있습니다.
  • Arrays: 배열과 관련된 다양한 유틸리티 메소드를 제공하는 클래스입니다. 배열의 정렬, 검색, 복사, 비교 등의 기능을 제공하며, 주요 메서드로는 sort(), binarySearch(), copyOf(), equals() 등이 있습니다.

※ ArrayList 사용

import java.util.ArrayList;

public class ArrayListExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();

        // 데이터 추가
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // 데이터 접근 및 출력
        for (int i = 0; i < fruits.size(); i++) {
            System.out.println(fruits.get(i));
        }

        // 데이터 삭제
        fruits.remove(1); // 인덱스 1 (Banana) 삭제

        // 데이터 수정
        fruits.set(0, "Grape");

        // 수정된 데이터 출력
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

 

※ HashMap 사용

import java.util.HashMap;

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> scores = new HashMap<>();

        // 데이터 추가
        scores.put("Alice", 90);
        scores.put("Bob", 85);
        scores.put("Charlie", 95);

        // 데이터 접근 및 출력
        System.out.println("Alice's score: " + scores.get("Alice"));
        System.out.println("Bob's score: " + scores.get("Bob"));
        System.out.println("Charlie's score: " + scores.get("Charlie"));

        // 데이터 삭제
        scores.remove("Bob");

        // 데이터 수정
        scores.put("Alice", 100);

        // 수정된 데이터 출력
        for (String key : scores.keySet()) {
            System.out.println(key + "'s score: " + scores.get(key));
        }
    }
}

 

자바 컬렉션 프레임워크를 사용하면 개발자는 복잡한 데이터 구조와 알고리즘을 직접 구현할 필요 없이 다양한 데이터를 효율적으로 저장하고 처리할 수 있습니다. 이를 통해 개발 시간을 절약하고 코드의 품질과 가독성을 향상할 수 있습니다. 따라서 자바 컬렉션 프레임워크를 이해하고 활용하면 프로그래머로서 더욱 발전할 수 있습니다.

반응형

댓글