컬렉션 프레임워크

1. 컬렉션 프레임워크

인터페이스 순서 중복 구현된 클래스
Collection x o (사실 개념만 있음→ 순서가 없으면 중복도 없어야하는데 이건 불가능해서 개념만 존재함)
Set x x HashSet(넣었던 순서를 보장하지 못한다), TreeSet(자동적으로 정렬이 된다. 오름차순)
List o o ArrayList(삽입,삭제가 빈번하면 효율이 떨어진다),LinkedList(포인터라고 생각하면 된다)

1.1. Collection

메서드 설명
boolean add(E e) 컬렉션에 엘리먼트를 추가합니다. 추가되지 않을 때 false를 반환합니다.
void clear() 컬렉션의 모든 엘리먼트를 삭제합니다.
boolean contains(Object o) 컬렉션이 주어진 객체를 포함하면 true를 반환합니다.
boolean isEmpty() 컬렉션이 비어있으면 true를 반환합니다.
Iterator<E> iterator() 이 컬렉션의 iterator 객체를 반환합니다.
boolean
remove(Object o) 주어진 엘리먼트 객체를 제거합니다.
Object[] toArray() 이 컬렉션의 모든 엘리먼트들을 배열로 반환합니다.
<T> T[] toArray(T[] a) 컬렉션의 모든 엘리먼트들을 주어진 타입의 배열로 반환합니다.

1.2 Set 인터페이스 개요

Set 인터페이스는 중복된 데이터를 저장할 수 없는 컬렉션입니다. 즉, 동일한 객체를 여러 번 추가하려 해도 하나만 저장됩니다.

또한, SortedSet 인터페이스는 저장된 객체를 오름차순으로 정렬하여 관리합니다. 이를 구현한 클래스에는 TreeSetConcurrentSkipListSet이 있습니다.


주요 메서드

메서드 설명
boolean add(E e) Set에 요소를 추가. 중복된 값이면 false 반환
void clear() Set의 모든 요소 삭제
boolean contains(Object o) 특정 객체 포함 여부 확인 (true 반환)
boolean isEmpty() Set이 비어있는지 확인 (true 반환)
Iterator<E> iterator() Set의 iterator 객체 반환
boolean remove(Object o) 특정 객체 제거
int size() Set의 요소 개수 반환
Object[] toArray() Set의 모든 요소를 배열로 반환
<T> T[] toArray(T[] a) Set의 모든 요소를 지정된 타입의 배열로 변환

예제 코드

import java.util.*;

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();

        set.add("apple");
        set.add("banana");
        set.add("apple"); // 중복 추가, 저장되지 않음
        set.add("cherry");

        System.out.println("Set 데이터: " + set); // 중복 제거 후 출력

        set.remove("banana");
        System.out.println("banana 제거 후 Set: " + set);

        System.out.println("Set에 cherry 포함? " + set.contains("cherry"));

        System.out.println("Set 크기: " + set.size());

        set.clear();
        System.out.println("clear() 후 Set이 비었는가? " + set.isEmpty());
    }
}


HashSet

HashSet중복된 데이터를 허용하지 않는 Set 컬렉션이며, 해시 테이블을 사용해 데이터를 저장합니다.

해시 테이블Key-Value 매핑을 통해 데이터를 관리하며, HashSet은 내부적으로 Key만 관리합니다.