간단하게 '집합'이기에 중복 값을 허용하지 않고, 저장 순서도 유지하지 않는 것
-> 순서를 유지하고 싶다면 LinkedHashSet 클래스 사용하기
import java.util.Set;
import java.util.HashSet;
public class Application {
public static void main(String[] args) {
Set<String> hashSet = new HashSet<>();
hashSet.add("java");
hashSet.add("mariaDB");
hashSet.add("servlet");
hashSet.add("spring");
hashSet.add("html");
System.out.println("hashSet = " + hashSet); // hashSet = [mariaDB, spring, java, servlet, html]
hashSet.add(new String("mariaDB")); // 중복값(동등객체)은 Set에 추가되지 않는다.
hashSet.add(new String("mariaDB1"));
System.out.println("hashSet = " + hashSet); // hashSet = [mariaDB, spring, java, mariaDB1, servlet, html]
}
}

데이터 삽입 후 출력을 해보았는데 앞서 말했듯 순서 보장 X, 중복값 허용 X인 것을 알 수 있다.
인덱스 개념이 없기 때문에 iterator(반복자) 를 사용해야 한다.
위 코드에 아래 추가해서 확인 가능
Iterator<String> iterator = hashSet.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}

Object[] array = hashSet.toArray();
for (int i = 0; i < array.length; i++) {
System.out.println((String)array[i]);
}
이 개념을 하는 것보다 Iterator를 사용하는 것을 권장한다.
new HashSet<>();Set<String> hashSet = new HashSet<>();
HashSet<String> hashSet = new HashSet<>();
위와 같이 하면 된다.
add() Set<String> hashSet = new HashSet<>();
hashSet.add("java");
hashSet.add("mariaDB");
hashSet.add("servlet");
hashSet.add("spring");
remove() Set<String> hashSet = new HashSet<>();
hashSet.add("java");
hashSet.add("mariaDB");
hashSet.add("servlet");
hashSet.add("spring");
hashSet.remove("java");
출력은 sout 이용
값을 포함하는지 true, false로 확인하기 - contains()
Set<String> hashSet = new HashSet<>();
hashSet.add("java");
hashSet.add("mariaDB");
hashSet.add("servlet");
hashSet.add("spring");
System.out.println(hashSet.contains("java"));
실행결과
true
clear() Set<String> hashSet = new HashSet<>();
hashSet.add("java");
hashSet.add("mariaDB");
hashSet.add("servlet");
hashSet.add("spring");
hashSet.clear();
System.out.println(hashSet.toString());
실행결과
[]
isEmpty() Set<String> hashSet = new HashSet<>();
hashSet.add("java");
hashSet.add("mariaDB");
hashSet.add("servlet");
hashSet.add("spring");
hashSet.clear();
System.out.println(hashSet.isEmpty());
실행결과
false
size() Set<String> hashSet = new HashSet<>();
hashSet.add("java");
hashSet.add("mariaDB");
hashSet.add("servlet");
hashSet.add("spring");
hashSet.clear();
System.out.println(hashSet.size());
실행결과
4
LinkedHashSet 은 순서를 유지하며 메소드는 똑같다.