저장 순서를 유지하지 않는다. 저장순서를 유지하고자 한다면 LinkedHashSet을 사용해야 한다.
🌱 HashSet 예제
package chapter11_p;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Ex11_9 {
public static void main(String[] args) {
// HashSet 예제1
Object[] objArr = {"1", new Integer(1), "2", "2", "3", "3", "4", "4", "4"};
Set set = new HashSet();
for(int i = 0; i < objArr.length; i++) {
set.add(objArr[i]); // HashSet에 objArr의 요소들을 저장한다. set.add
}
System.out.println(set);
Iterator it = set.iterator(); // HashSet에 저장된 요소들을 출력한다. (Iterator이용)
while(it.hasNext()) { // 읽어올 요소가 있는지 확인
System.out.println(it.next()); // 요소 하나 꺼내오기
}
}
}
//--------
//[1, 1, 2, 3, 4]
//1
//1
//2
//3
//4
package chapter11_p;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class Ex11_10 {
public static void main(String[] args) {
// HashSet 예제2
Set set = new HashSet();
for (int i = 0; set.size() < 6; i++) {
int num = (int)(Math.random()*45) + 1;
set.add(num);
}
// set은 정렬이 불가하기 때문에, 정렬하기 위해서는, Collections클래스의 sort(List list)를 사용.
// 이 메서드는 List 인터페이스 타입을 필요로 하기 때문에, LinkedList(Collection c) 클래스의 생성자 이용.
List list = new LinkedList(set); // LinkedList(Collection c) set에 모든 요소를 list에 저장.
Collections.sort(list); // Collections.sort(List list)
System.out.println(list);
}
}
//---------
//[2, 21, 30, 36, 37, 45]
package chapter11_p;
import java.util.HashSet;
import java.util.Iterator;
public class Ex11_12 {
public static void main(String[] args) {
// HashSet 예제4
HashSet setA = new HashSet();
HashSet setB = new HashSet();
HashSet setHab = new HashSet();
HashSet setKyo = new HashSet();
HashSet setCha = new HashSet();
setA.add("1");
setA.add("2");
setA.add("3");
setA.add("4");
setA.add("5");
System.out.println("A = " + setA);
setB.add("4");
setB.add("5");
setB.add("6");
setB.add("7");
setB.add("8");
System.out.println("B = " + setB);
Iterator it = setB.iterator();
while(it.hasNext()) {
Object tmp = it.next();
if(setA.contains(tmp)) { // 교집합
setKyo.add(tmp);
}
}
it = setA.iterator();
while(it.hasNext()) {
Object tmp = it.next();
if(!setB.contains(tmp)) { // 차집합
setCha.add(tmp);
}
}
it = setA.iterator();
while(it.hasNext()) { //합집합
setHab.add(it.next());
}
it = setB.iterator();
while(it.hasNext()) { //합집합
setHab.add(it.next());
}
System.out.println("A와 B의 교집합 = " + setKyo);
System.out.println("A와 B의 합집합 = " + setHab);
System.out.println("A와 B의 차집합 = " + setCha);
}
}
//
//--------
//A = [1, 2, 3, 4, 5]
//B = [4, 5, 6, 7, 8]
//A와 B의 교집합 = [4, 5]
//A와 B의 합집합 = [1, 2, 3, 4, 5, 6, 7, 8]
//A와 B의 차집합 = [1, 2, 3]