개발/Java
[Java] HashSet
Selina Park
2019. 9. 3. 13:00
Hashset은 중복을 허용하지 않고 순서가 없다. 만약 중복을 허용하지 않는 순서가 있는 집합을 만들고 싶다면 LinkedHashSet을 사용하면 된다.
package hash;
import java.util.HashSet;
import java.util.Iterator;
public class HashSet_Union_Inter {
public static void main(String[] args) {
HashSet SetA = new HashSet(); // [1, 2, 3, 4, 5]
HashSet SetB = new HashSet(); // [1, 2, 4, 5, 6]
HashSet SetUnion = new HashSet(); // [1, 2, 3, 4, 5, 6]
HashSet SetInter = new HashSet(); // [1, 2, 4, 5]
HashSet SetA_B_Diff = new HashSet(); //A-B = A - (A and B, SetInter) = [3]
HashSet SetB_A_Diff = new HashSet(); //B-A = B - (A and B, SetInter) = [6]
// push data on SetA
SetA.add("1");
SetA.add("2");
SetA.add("3");
SetA.add("4");
SetA.add("5");
// push data on SetB
SetB.add("1");
SetB.add("2");
SetB.add("4");
SetB.add("5");
SetB.add("6");
// 반복문 Iterator
// Get SetInter (교집합)
// Get SetUnion : 중복을 허용하지 않는 Hashset이므로, 그냥 A+B해주면 합집합이 나온다.
Iterator iteratorA = SetA.iterator();
while(iteratorA.hasNext()){
Object tmp = iteratorA.next();
//A의 원소 중, B에 포함 되어있는게 있으면 SetInter에 넣는다.
if(SetB.contains(tmp)){
SetInter.add(tmp);
}else {
SetA_B_Diff.add(tmp);
}
SetUnion.add(tmp);
}
// 차집합 구하기 (B-A)
Iterator iteratorB = SetB.iterator();
while(iteratorB.hasNext()){
Object tmp = iteratorB.next();
if(!SetA.contains(tmp)){
SetB_A_Diff.add(tmp);
}
SetUnion.add(tmp);
}
System.out.println(SetA); //A
System.out.println(SetB); //B
System.out.println(SetUnion); //합집합
System.out.println(SetInter); // 교집합
System.out.println(SetA_B_Diff); //A-B
System.out.println(SetB_A_Diff); //B-A
}
}