본문 바로가기
Study/Java

[Java] List와 Set의 차이점

by 오늘만 사는 여자 2022. 4. 12.
728x90
반응형

List와 Set의 차이점에 대해서 소개합니다.

Ordered collection vs Unordered collection

List는 순서가 있는 Collection입니다. List에 데이터를 넣는 순서가 보장되며, 그렇기 때문에 index로 특정 아이템을 가져올 수 있습니다.

Set는 순서를 보장하지 않는 Collection입니다. 그렇기 때문에 index로 특정 아이템을 가져올 수 없습니다.

Example

List의 경우 순서가 보장되는 Collection이기 때문에, 다음과 같이 index로 특정 아이템을 가져올 수 있습니다.

String[] fruitsArray = {"apple", "banana", "kiwi", "mango"};
ArrayList<String>  fruits = new ArrayList<>(Arrays.asList(fruitsArray));

System.out.println("get(0) : " + fruits.get(0));
System.out.println("get(2) : " + fruits.get(2));

Output:

get(0) : apple
get(2) : kiwi

Set의 경우 순서가 보장되지 않기 때문에, add()의 순서와 저장되는 순서가 다릅니다. 이 순서는 Set의 구현에 따라서 달라질 수 있습니다.

Set<String> fruits = new HashSet<String>();
fruits.add("apple");
fruits.add("banana");
fruits.add("kiwi");
System.out.println("fruits: " + fruits);

Output:

fruits: [banana, apple, kiwi]

중복 허용

List는 중복을 허용합니다. 즉, 중복된 아이템을 List에 추가할 수 있습니다.

Set는 중복을 허용하지 않습니다. 즉, 중복된 아이템은 Set에 추가되지 않습니다. 중복된 값을 추가하려고 하면 무시됩니다.

Example

List는 중복을 허용합니다. 다음과 같이 중복된 값을 추가할 수 있습니다.

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("kiwi");
fruits.add("kiwi");
fruits.add("kiwi");
fruits.add(null);
System.out.println("fruits: " + fruits);

Output:

fruits: [apple, banana, kiwi, kiwi, kiwi, null]

Set는 중복을 허용하지 않기 때문에, 다음과 같이 중복된 값을 여러번 넣으려고 시도해도 무시됩니다.

Set<String> fruits = new HashSet<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("kiwi");
fruits.add("kiwi");
fruits.add("kiwi");
System.out.println("fruits: " + fruits);

Output:

fruits: [banana, apple, kiwi]

언제 Set 또는 List를 사용해야 할까요?

  • 저장되는 데이터의 순서를 보장해야한다면 List를 사용해야 합니다.
  • contains(element)는 Collection에 데이터가 존재하는지 확인하는 메소드입니다. List의 contains 실행 속도는 O(n)이지만, Set는 O(1)으로 매우 빠릅니다. 탐색이 잦다면 Set를 고려해볼 수 있습니다.
  • 데이터가 많지 않다면 성능보다, 구조가 간단한 List를 고려해볼 수 있습니다.
  • 중복을 허용하지 않는 Collection이 필요하다면 Set를 고려해볼 수 있습니다.

출처 : https://codechacha.com/ko/java-difference-between-list-and-set/

728x90
반응형

댓글