List, Set, Map

Kohuijae·2024년 11월 24일

1. List

  • 특징: 순서가 유지되며 중복된 요소를 허용한다.

  • 주요 구현 클래스

    • ArrayList: 배열 기반으로, 검색 속도가 빠름.
    • LinkedList: 노드 기반으로, 삽입과 삭제가 빠름.
    • Vector: 동기화된 버전의 ArrayList (잘 사용되지 않음).
    • Stack: LIFO 구조를 가지는 스택.
import java.util.*;

public class ListExample {
    public static void main(String[] args) {
        // ArrayList 사용
        List<String> arrayList = new ArrayList<>();
        arrayList.add("Apple");
        arrayList.add("Banana");
        arrayList.add("Cherry");
        System.out.println("ArrayList: " + arrayList);

        // LinkedList 사용
        List<String> linkedList = new LinkedList<>();
        linkedList.add("Dog");
        linkedList.add("Elephant");
        linkedList.add("Frog");
        System.out.println("LinkedList: " + linkedList);

        // Vector 사용
        List<String> vector = new Vector<>();
        vector.add("Giraffe");
        vector.add("Hippo");
        System.out.println("Vector: " + vector);

        // Stack 사용
        Stack<String> stack = new Stack<>();
        stack.push("India");
        stack.push("Japan");
        stack.push("Korea");
        System.out.println("Stack: " + stack);

        // Stack 요소 제거
        System.out.println("Popped element: " + stack.pop());
        System.out.println("Stack after pop: " + stack);
    }
}

2. Set

  • 특징: 중복을 허용하지 않으며 순서를 유지하지 않을 수 있음.
  • 주요 구현 클래스
    • HashSet: 요소의 순서를 유지하지 않음.
    • LinkedHashSet: 삽입된 순서를 유지.
    • TreeSet: 정렬된 순서로 요소를 유지.
import java.util.*;

public class SetExample {
    public static void main(String[] args) {
        // HashSet 사용
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Apple"); // 중복된 요소는 추가되지 않음
        System.out.println("HashSet: " + hashSet);

        // LinkedHashSet 사용
        Set<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("Dog");
        linkedHashSet.add("Elephant");
        linkedHashSet.add("Dog"); // 중복된 요소는 추가되지 않음
        System.out.println("LinkedHashSet: " + linkedHashSet);

        // TreeSet 사용
        Set<String> treeSet = new TreeSet<>();
        treeSet.add("Cherry");
        treeSet.add("Banana");
        treeSet.add("Apple");
        System.out.println("TreeSet: " + treeSet); // 정렬된 순서로 출력
    }
}

3. Map

  • 특징: 키-값 쌍으로 데이터를 저장. 키는 중복될 수 없으나 값은 중복 가능.

  • 주요 구현 클래스

    • HashMap: 순서를 유지하지 않음.
    • LinkedHashMap: 삽입된 순서를 유지.
    • TreeMap: 키를 정렬된 순서로 유지.
    • Hashtable: 동기화된 버전의 HashMap (잘 사용되지 않음).
import java.util.*;

public class MapExample {
    public static void main(String[] args) {
        // HashMap 사용
        Map<Integer, String> hashMap = new HashMap<>();
        hashMap.put(1, "One");
        hashMap.put(2, "Two");
        hashMap.put(3, "Three");
        System.out.println("HashMap: " + hashMap);

        // LinkedHashMap 사용
        Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put(1, "One");
        linkedHashMap.put(2, "Two");
        linkedHashMap.put(3, "Three");
        System.out.println("LinkedHashMap: " + linkedHashMap);

        // TreeMap 사용
        Map<Integer, String> treeMap = new TreeMap<>();
        treeMap.put(3, "Three");
        treeMap.put(1, "One");
        treeMap.put(2, "Two");
        System.out.println("TreeMap: " + treeMap); // 키의 정렬 순서로 출력

        // Hashtable 사용
        Map<Integer, String> hashtable = new Hashtable<>();
        hashtable.put(1, "One");
        hashtable.put(2, "Two");
        hashtable.put(3, "Three");
        System.out.println("Hashtable: " + hashtable);
    }
}

0개의 댓글