046_셋(Set)

Jan 09, 2024
046_셋(Set)

Set

  • 순서에 상관없이 데이터만 저장하고 싶을 때 사용한다.
  • 동일한 데이터를 중복해서 가질 수 없다.
  • Collection 인터페이스에 정의된 메소드를 제공하며 데이터의 중복만 막도록 설계되어 있다.
  • 종류로는 “HashSet”, “TreeSet”, “LinkedHashSet” 3가지가 있다.

HashSet

  • 해쉬 테이블에 원소를 저장하기 때문에 성능면에서 가장 우수하지만, 원소들의 순서가 일정하지 않다.

TreeSet

  • 레드-블랙 트리(red-black tree)에 원소를 저장한다. 따라서 값에 따라 순서가 결정되지만 HashSet보다 느리다.

LinkedHashSet

  • 해쉬 테이블과 연결 리스트를 결합한 것으로 원소들의 순서는 삽입되었던 순서와 같다.
  • 약간의 비용을 들여 HashSet의 문제점인 순서의 불명확성을 제거한 방법이다.

Set을 사용한 코드

  • Set의 특징인 중복을 허용하지 않는 것을 확인하는 코드
package ex13; import java.util.*; public class FindDupplication { public static void main(String[] args) { Set<String> s = new HashSet<>(); String[] sample = {"사과", "사과", "바나나", "토마토"}; for (String a : sample) { if (!s.add(a)) { System.out.println("중복된 단어: " + a); } } System.out.println(s.size() + " 중복되지 않은 단어: " + s); } } // 중복된 단어: 사과 // 3 중복되지 않은 단어: [토마토, 사과, 바나나]
  • HashSet, TreeSet, LinkedHashSet을 모두 사용한 코드
package ex13; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.TreeSet; public class SetTest1 { public static void main(String[] args) { // HashSet HashSet<String> set1 = new HashSet<>(); set1.add("Milk"); set1.add("Bread"); set1.add("Butter"); set1.add("Cheese"); set1.add("Ham"); set1.add("Ham"); System.out.println(set1); if (set1.contains("Ham")) { System.out.println("Ham도 포함되어 있음"); } // LinkedHashSet - 입력 순서대로 출력 LinkedHashSet<String> set2 = new LinkedHashSet<>(); set2.add("Milk"); set2.add("Bread"); set2.add("Butter"); set2.add("Cheese"); set2.add("Ham"); set2.add("Ham"); System.out.println(set2); if (set2.contains("Ham")) { System.out.println("Ham도 포함되어 있음"); } // TreeSet - 알파벳 순대대로 출력 TreeSet<String> set3 = new TreeSet<>(); set3.add("Milk"); set3.add("Bread"); set3.add("Butter"); set3.add("Cheese"); set3.add("Ham"); set3.add("Ham"); System.out.println(set3); if (set3.contains("Ham")) { System.out.println("Ham도 포함되어 있음"); } } } // HashSet // [Ham, Butter, Cheese, Milk, Bread] // Ham도 포함되어 있음 // LinkedHashSet // [Milk, Bread, Butter, Cheese, Ham] // Ham도 포함되어 있음 // TreeSet // [Bread, Butter, Cheese, Ham, Milk] // Ham도 포함되어 있음
 
Share article
RSSPowered by inblog