Backend/Java

Java - List vs Set

개발자의 첫 걸음 2025. 8. 25. 18:00

 

 

안녕하세요. 오늘은 Java에서 자주 사용하는 List와 Set의 차이점을 알아볼게요.

 

 

List

 

List는 순서(인덱스)가 있는 컬렉션으로

 

중복 요소를 허용하고, 요소의 삽입 순서가 유지됩니다.

 

List의 대표적인 구현 클래스는 ArrayList, LinkedList, Vector가 있는데요.

 

ArrayList는 배열기반으로 탐색이 빠른 특징을 가지고 있어요.

 

LinkedList는 연결리스트 기반으로 삽입/삭제가 빨라요.

 

Vector는 동기화된 List로 배열 기반의 자료구조를 가지고 있어요. (구버전 - java 1.0)

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("A"); // 중복 허용
System.out.println(list); // [A, B, A]

 

 

Set

 

Set은 순서가 없는 컬렉션으로 중복 요소를 허용하지 않아요.

 

일부구현체는 순서를 유지하거나 정렬 해요.

 

그리고 동일한 객체가 두 번 이상 저장되지 않아요.

 

대표적인 구현 클래스는 HashSet, LinkedHashSet, TreeSet 이 있는데요.

 

HashSet은 순서가 없고, 가장 빠른 성능을 가지고 있어요.

 

LinkedHashSet은 삽입한 순서를 유지를 시켜줘요.

 

TreeSet은 자동정렬로 클래스 사용을 위해 Comparable 또는 Comparator 가 필요해요.

Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A"); // 중복 무시
System.out.println(set); // [A, B]

 

 

List와 Set의 차이점을 간단하게 표로 구분해 봤어요.

 

항목 List Set
순서 유지됨 (인덱스 있음) 유지되지 않음 (또는 구현체에 따라 다름)
중복 허용 허용하지 않음
주요 구현체 ArrayList, LinkedList, Vector HashSet, LinkedHashSet, TreeSet
접근 방식 인덱스로 요소 접근 가능 요소로 직접 접근 (contains 등)
사용 용도 순서 있는 목록, 중복 필요할 때 유일한 요소 모음 필요할 때

 

 

 

List와 Set의 사용방법

 

List는 요소들의 순서가 중요할 때와 중복 데이터를 허용하고 싶을 때,

 

그리고 인덱스를 통해 접근하고 싶을 때 사용하고

 

Set은 중복을 제거하고 유일한 값만 저장하고 싶을 때와 포함 여부 확인(contains)이 주 목적인 경우,

 

그리고 정렬된 데이터가 필요할 때 사용해요. 단 정렬된 데이터 출력TreeSet을 사용하셔야 해요.

 

 

 

여기까지 List와 Set의 차이점을 간단하게 알아봤는데요.

 

List를 많이 사용하다 Set을 알게 된 후 혼란이 왔었던 기억이 납니다.

 

List와 Set을 사용할지 알고 싶을 때 한 번씩 찾아보면 좋을 것 같아요,

'Backend > Java' 카테고리의 다른 글

Spring Boot - JWT  (0) 2025.08.31
Spring Security  (2) 2025.08.29
Spring Boot - 필터링 & 검색 기능  (0) 2025.08.22
Spring Boot - Validation  (0) 2025.08.20
Spring Boot  (1) 2025.08.17