참고할 게시물

[Java] 개발지식 조각 - 컬렉션 프레임워크

이미 위 게시물에서 공부했지만, 하나하나 더 자세하게 알아보고 싶었다.

List

분류 클래스명 설명
설명 순서가 있는 요소의 집합으로, 중복을 허용
인덱스를 사용하여 요소에 접근 가능
주요 메서드 add()
get()
remove()
indexOf()
size()
주요 구현 클래스 ArrayList 동적 배열로 구현됨
인덱스를 통한 접근이 빠름
중간에 요소를 삽입하거나 삭제할 때 성능이 떨어질 수 있
LinkedList 이중 연결 리스트로 구현됨
요소의 추가 및 삭제가 용이
Vector 동기화된 리스트
멀티스레드 환경에서 안전함
성능이 저하될 수 있음

Set

분류 클래스명 설명
설명 중복되지 않는 요소의 집합
순서가 보장되지 않음
요소의 유일성을 보장
주요 메서드 add()
remove()
contains()
size()
주요 구현 클래스 HashSet 해시 테이블 기반으로 구현됨
가장 일반적인 Set 구현
요소의 순서를 보장하지 않음
LinkedHashSet HashSet의 특성을 가지면서, 요소의 삽입 순서를 유지
TreeSet 정렬된 Set
요소가 자연 순서 또는 제공된 비교기에 의해 정렬

Map

분류 클래스명 설명
설명 키-값 쌍의 집합
각 키는 유일해야 함
키를 사용하여 값을 조회할 수 있음
키와 값의 순서가 보장되지 않
주요 메서드 put()
get()
remove()
containsKey()
keySet()
주요 구현 클래스 HashMap 해시 테이블 기반으로 구현된 가장 일반적인 Map
키의 순서를 보장하지 않
LinkedHashMap 삽입 순서를 유지하는 HashMap의 변형
TreeMap 키를 정렬된 순서로 유지하는 Map

Queue

분류 클래스명 설명
설명 FIFO(First In First Out) 구조를 가진 요소의 집합
요소를 추가하고 제거하는 작업이 중요
주요 메서드 offer()
poll()
peek()
size()
주요 구현 클래스 LinkedList * Queue 인터페이스를 구현함
큐의 양쪽 끝에서 요소를 추가하고 제거할 수 있음
PriorityQueue 우선순위에 따라 요소가 처리되는 큐
우선순위가 높은 요소가 먼저 처리
ArrayDeque 동적 배열 기반의 덱(Deque)
큐와 스택의 기능을 모두 지원

* LinkedList는 리스트와 큐 두 가지 기능을 모두 제공하는 다목적 자료구조임.
List, Queue 인터페이스를 모두 구현 가능함
즉, 요소의 순서를 유지하고 중복을 허용하는 리스트로서의 기능과 FIFO 구조를 가진 큐로서의 기능을 모두 수행할 수 있음
사용자가 필요에 따라 리스트나 큐로서 활용
import java.util.LinkedList;
import java.util.List;

public class LinkedListExample {
    public static void main(String[] args) {
        // List로서의 LinkedList 사용
        List<String> list = new LinkedList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        System.out.println("List: " + list); // 출력: List: [Apple, Banana, Cherry]

        // Queue로서의 LinkedList 사용
        LinkedList<String> queue = (LinkedList<String>) list;
        queue.offer("Date");
        System.out.println("Queue after offer: " + queue); // 출력: Queue after offer: [Apple, Banana, Cherry, Date]

        System.out.println("Poll: " + queue.poll()); // 출력: Poll: Apple
        System.out.println("Queue after poll: " + queue); // 출력: Queue after poll: [Banana, Cherry, Date]
    }
}​

요약

종류
List 순서가 있으며 중복 가능
Set 중복 불가, 순서 없음
Map 키-값 쌍, 키는 유일
Queue FIFO 구조, 요소 추가 및 제거 중요
이러한 Java의 컬렉션 인터페이스들을 이용하면 데이터 구조를 효과적 관리 및 사용할 수 있음.

비고

1. LinkedList는 써본 적 없는 것 같은데 찾아보니까 신기하네. Queue도 안 익숙하다. 중요한 내용 같으니 잘 인식해두자.

레퍼런스

1. 멘토링 강의, 도서관, 코드 예시의 경우 ChatGPT

 

'개발지식 조각 > Java' 카테고리의 다른 글

Static (변수/메서드/클래스)  (0) 2024.10.31
클린 코드의 정의  (0) 2024.10.31
제너럴한 명명규칙 정리  (0) 2024.10.31
AssertJ  (0) 2024.10.31
JUnit 5과 동적 테스트  (0) 2024.10.31

+ Recent posts