본문 바로가기
Java

[Java; 자바] 자바 컬렉션 프레임워크 Java Collection Framework

by daddydontsleep 2023. 11. 8.
728x90
728x90

사진: Unsplash 의 Jason Leung

자바 컬렉션 프레임워크는 자바에서 데이터를 저장하고 관리하는데 사용되는 클래스들의 집합입니다.

이 프레임워크는 다양한 자료구조와 알고리즘을 제공하여 데이터의 효율적인 처리와 관리를 도와줍니다.

주요한 컬렉션 프레임워크 인터페이스와 클래스에 대해 알아보겠습니다.

 

1. List 인터페이스

  • List는 순서가 있는 데이터의 집합으로, 중복된 데이터를 허용합니다.
  • ArrayList와 LinkedList가 List 인터페이스를 구현한 대표적인 클래스입니다.
  • ArrayList는 내부적으로 배열을 사용하여 데이터를 저장하고, 빠른 접근이 가능합니다.
  • LinkedList는 각 요소가 이전 요소와 다음 요소에 대한 참조를 가지고 있어, 요소의 추가/삭제가 빈번한 경우에 유리합니다.

2. Set 인터페이스

  • Set은 순서가 없는 데이터의 집합으로, 중복된 데이터를 허용하지 않습니다.
  • HashSet과 TreeSet이 Set 인터페이스를 구현한 대표적인 클래스입니다.
  • HashSet은 해시 함수를 사용하여 데이터를 저장하므로, 데이터의 삽입/검색 속도가 빠릅니다.
  • TreeSet은 데이터를 정렬된 상태로 유지하므로, 정렬된 순서로 데이터에 접근할 수 있습니다.

3. Map 인터페이스

  • Map은 키(Key)와 값(Value)의 쌍으로 데이터를 저장하는 구조입니다.
  • 중복된 키는 허용되지 않으며, 하나의 키에는 하나의 값만 매핑됩니다.
  • HashMap과 TreeMap이 Map 인터페이스를 구현한 대표적인 클래스입니다.
  • HashMap은 해시 함수를 사용하여 데이터를 저장하며, 키를 기반으로 빠른 검색 속도를 제공합니다.
  • TreeMap은 데이터를 정렬된 상태로 유지하므로, 정렬된 순서로 데이터에 접근할 수 있습니다.

 

<예제>

다음은 ArrayList를 사용하여 문자열을 저장하고 HashSet을 사용하여 중복을 제거한 예제입니다.

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class CollectionExample {
    public static void main(String[] args) {
        // ArrayList를 사용하여 문자열을 저장
        List<String> stringList = new ArrayList<>();
        stringList.add("Apple");
        stringList.add("Banana");
        stringList.add("Cherry");
        stringList.add("Banana"); // 중복된 데이터 추가

        System.out.println("ArrayList:");
        for (String str : stringList) {
            System.out.println(str);
        }

        // HashSet을 사용하여 중복 제거
        Set<String> stringSet = new HashSet<>(stringList);

        System.out.println("\nHashSet:");
        for (String str : stringSet) {
            System.out.println(str);
        }
    }
}

위의 코드에서는 먼저 ArrayList를 사용하여 문자열을 저장합니다.

"Apple", "Banana", "Cherry", "Banana"를 순서대로 추가하였는데, 중복된 "Banana"가 있습니다.

그리고 HashSet을 사용하여 중복을 제거합니다.

ArrayList를 HashSet으로 변환함으로써 중복된 데이터가 제거되고, 순서가 없는 HashSet이 생성됩니다.

콘솔 출력 결과는 다음과 같습니다.

ArrayList:
Apple
Banana
Cherry
Banana

HashSet:
Banana
Apple
Cherry

ArrayList에는 중복된 "Banana"가 포함되어 있지만, HashSet에는 중복이 제거된 상태로 저장되어 있음을 확인할 수 있습니다.

 

다음은 List 예제 코드 입니다.

import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        System.out.println("Fruits:");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

위의 코드는 List를 사용하여 과일 이름을 저장하고 출력하는 예제입니다.

ArrayList를 사용하여 "Apple", "Banana", "Cheery"를 순서대로 추가하고, for-each 문을 사용하여 리스트의 요소를 출력합니다.

 

다음은 Set 예제 코드 입니다.

import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> uniqueNames = new HashSet<>();
        uniqueNames.add("John");
        uniqueNames.add("Emma");
        uniqueNames.add("John"); // 중복된 이름

        System.out.println("Unique Names:");
        for (String name : uniqueNames) {
            System.out.println(name);
        }
    }
}

위의 코드는 Set을 사용하여 중복을 허용하지 않는 고유한 이름을 저장하고 출력하는 예제입니다.

HashSet을 사용하여 "John", "Emma", "John"을 순서대로 추가하고, for-each 문을 사용하여 Set의 요소를 출력합니다.

중복된 "John"은 한 번만 저장되고 출력됩니다.

 

다음은 Map 예제 코드 입니다.

import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> scores = new HashMap<>();
        scores.put("John", 80);
        scores.put("Emma", 90);
        scores.put("Tom", 75);

        System.out.println("Scores:");
        for (Map.Entry<String, Integer> entry : scores.entrySet()) {
            String name = entry.getKey();
            int score = entry.getValue();
            System.out.println(name + ": " + score);
        }
    }
}

위의 코드는 Map을 사용하여 이름과 점수를 저장하고 출력하는 예제입니다.

HashMap을 사용하여 "John"을 key로 80을 저장하고, "Emma"을 key로 90을 저장하고, "Tom"을 key로 75를 저장합니다.

for-each 문을 사용하여 Map의 key-value 쌍을 출력합니다.

각 예제 코드에서는 해당하는 컬렉션을 생성하고 값을 추가한 후, 반복문을 사용하여 컬렉션의 요소를 출력합니다.

이를 통해 List, Set, Map의 기본적인 사용법을 확인할 수 있습니다.

728x90
300x250