집합(Set)
순서에 상관없이 데이터만 저장하는 자료구조, 데이터의 중복을 막도록 되어있음
자방서는 Set 인터페이스에 대하여 HahsSet, TreeSet, LinkedHasSet가 제공됨
HahsSet : 해쉬 테이블에 원소를 저장하기 때문에 성능면에서 가장 우수하나 원소들의
순서가 일정하지 않은 단점이 있다.
TreeSet : 레드-블랙 트리에 원소를 저장함. 따라서 값에 따라 순서가 결정되지만, Hahs보다 느림
LinkedHasSet : 해쉬 테이블과 연결 리스트를 결합한 것으로 원소들의 순서는 삽입되었던 순서와
같다. 약간의 코스트를 들여서 Hash의 문제점인 순서의 불명확성을 제거한 방법.
문자열을 Set에 저장
package ex13;
import java.util.HashSet;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
Set<String> s = new HashSet<>();
s.add("A");
s.add("B");
s.add("C");
s.add("D");
s.add("E");
s.add("E");
System.out.println(s);
if (s.contains("E")) { // contains : 집합 안에 데이터가 있는지, 없는지의 여부를 boolean값으로 반환
System.out.println("E도 포함되어 있음");
}
System.out.println();
System.out.println("들어가 있는 값");
for (String v : s) {
System.out.print(v + " ");
}
System.out.println();
System.out.println();
System.out.println("s의 사이즈: " + s.size());
}
}

<aside> 💡 중복값은 들어가지 않는다.
</aside>
중복된 단어 검출하기
package ex13;
import java.util.HashSet;
import java.util.Set;
public class FindDupplication {
public static void main(String[] args) {
Set<String> list = new HashSet<>();
String[] sample = {"사과", "사과", "바나나", "토마토"};
for (String a : sample) {
if (!list.add(a)) { // 집합에 추가되지 않으면 중복된 단어이다.
System.out.println("중복된 단어: " + a);
}
}
System.out.println(list.size() + "중복되지 않은 단어" + list);
}
}
