Back_End/JAVA

자바 컬렉션 (Java Collections)

10Biliion 2024. 12. 11. 17:01

 

 

1. 컬렉션의 기본 구성

자바 컬렉션은 크게 세 가지 주요 인터페이스로 나뉩니다:

  • List: 순서가 있는 데이터의 집합. 중복 요소를 허용.
  • Set: 중복을 허용하지 않는 데이터의 집합.
  • Map: 키-값 쌍으로 구성된 데이터의 집합. 키는 중복 불가, 값은 중복 허용.

주요 인터페이스 및 구현 클래스

인터페이스 구현 클래스
List ArrayList, LinkedList, Vector
Set HashSet, LinkedHashSet, TreeSet
Map HashMap, LinkedHashMap, TreeMap

2. List (리스트)

"순서를 유지하며, 중복을 허용하는 데이터 집합."

ArrayList

  • 특징: 배열 기반, 인덱스로 빠르게 접근 가능.
  • 단점: 삽입/삭제 시 성능 저하.
import java.util.ArrayList;

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

        for (String item : list) {
            System.out.println(item);
        }
    }
}

LinkedList

  • 특징: 노드 기반, 삽입/삭제가 빠름.
  • 단점: 인덱스 접근 성능이 낮음.
import java.util.LinkedList;

public class LinkedListExample {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("Dog");
        list.add("Cat");
        list.add("Rabbit");

        for (String item : list) {
            System.out.println(item);
        }
    }
}

3. Set (집합)

"중복을 허용하지 않는 데이터 집합."

HashSet

  • 특징: 순서를 유지하지 않음.
  • 용도: 중복 제거.
import java.util.HashSet;

public class HashSetExample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("One");
        set.add("Two");
        set.add("Two"); // 중복된 값은 추가되지 않음

        for (String item : set) {
            System.out.println(item);
        }
    }
}

TreeSet

  • 특징: 정렬된 순서로 저장.
import java.util.TreeSet;

public class TreeSetExample {
    public static void main(String[] args) {
        TreeSet<Integer> set = new TreeSet<>();
        set.add(10);
        set.add(5);
        set.add(20);

        for (int item : set) {
            System.out.println(item); // 5, 10, 20
        }
    }
}

4. Map (맵)

"키(Key)-값(Value) 쌍으로 데이터를 저장."

HashMap

  • 특징: 순서를 유지하지 않음. 빠른 검색 가능.
import java.util.HashMap;

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

        for (String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
    }
}

LinkedHashMap

  • 특징: 입력된 순서를 유지.
import java.util.LinkedHashMap;

public class LinkedHashMapExample {
    public static void main(String[] args) {
        LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
        map.put("A", 100);
        map.put("B", 200);
        map.put("C", 300);

        for (String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
    }
}

5. 컬렉션의 정렬

자바는 Collections 클래스를 이용하여 리스트를 정렬할 수 있습니다.

import java.util.ArrayList;
import java.util.Collections;

public class SortExample {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(5);
        numbers.add(3);
        numbers.add(8);

        Collections.sort(numbers); // 오름차순 정렬
        System.out.println(numbers); // [3, 5, 8]

        Collections.reverse(numbers); // 내림차순 정렬
        System.out.println(numbers); // [8, 5, 3]
    }
}