Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java List와 Set의 차이점 완벽 비교 가이드

Java에서 ListSet은 모두 컬렉션(Collection) 프레임워크에 속하는 핵심 인터페이스입니다. 두 인터페이스 모두 Collection 인터페이스를 상속하며, 여러 객체를 하나의 단위로 묶어 저장하는 데 사용됩니다.

JDK 1.2 이전에는 객체를 그룹화하기 위해 배열(Array), Vector, Hashtable을 주로 사용했습니다. JDK 1.2부터 도입된 컬렉션 프레임워크는 이러한 데이터 구조를 체계적으로 통합하여 훨씬 편리하고 일관성 있는 방식으로 객체를 관리할 수 있게 해줍니다.

그렇다면 List와 Set은 어떤 점에서 다를까요? 아래 표에서 주요 차이점을 한눈에 확인할 수 있습니다.

List와 Set의 주요 차이점

번호구분ListSet
1위치 기반 접근인덱스(index)를 통해 컬렉션 내 요소에 위치 기반으로 접근할 수 있습니다.위치 기반 접근을 지원하지 않습니다.
2주요 구현체ArrayList, LinkedList, Vector, Stack 등이 있습니다.HashSet, LinkedHashSet, TreeSet 등이 있습니다.
3중복 요소중복된 요소를 자유롭게 저장할 수 있습니다.중복된 요소를 저장할 수 없습니다.
4순서 유지요소가 삽입된 순서(insertion order)를 그대로 유지합니다.기본적으로 순서를 유지하지 않습니다. (LinkedHashSet은 삽입 순서, TreeSet은 정렬 순서 예외)
5null 요소여러 개의 null 값을 저장할 수 있습니다.null 값은 최대 하나만 저장할 수 있습니다.

List 사용 예제

다음 예제는 ArrayList에 문자열을 추가하는 코드입니다. 동일한 값 "BMW"를 두 번 추가해도 중복 없이 그대로 저장되는 것을 확인할 수 있습니다.

import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;

public class ListExample {
    public static void main(String[] args) {
        List<String> al = new ArrayList<String>();
        al.add("BMW");
        al.add("Audi");
        al.add("BMW");  // 중복 허용
        System.out.println("List Elements: ");
        System.out.print(al);
    }
}

실행 결과

List Elements:
[BMW, Audi, BMW]

Set 사용 예제

다음 예제는 HashSet에 정수 값을 추가하는 코드입니다. HashSet은 중복을 허용하지 않으며, 내부 해시 알고리즘에 따라 저장 순서가 달라질 수 있습니다.

import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;

public class SetExample {
    public static void main(String args[]) {
        int count[] = {2, 4, 3, 5};
        Set<Integer> hset = new HashSet<Integer>();
        try {
            for(int i = 0; i < 4; i++) {
                hset.add(count[i]);
            }
            System.out.println(hset);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과

[2, 4, 3, 5]

정리: 언제 무엇을 사용해야 할까?

List는 요소의 순서가 중요하거나, 인덱스로 특정 위치의 데이터에 접근해야 하거나, 중복 데이터를 허용해야 하는 경우에 적합합니다. 반면 Set은 중복을 허용하지 않는 고유한 값들의 집합을 다룰 때 유용합니다. 예를 들어 회원 ID 목록처럼 중복이 없어야 하는 데이터를 관리할 때 Set을 사용하는 것이 좋습니다.