HashSet 사용해서 구현해보기
- 교집합: a.retainAll(b); //a에는 교집합 원소만 남게 됨
- 합집합: a.addAll(b); //a에는 합집합 원소 들어감
- 차집합: a.removeAll(b);//a에는 b의 원소들이 모두 제거됨
import java.util.Arrays;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
System.out.println("== HashSet ==");
HashSet set1 = new HashSet();
set1.add(1);
set1.add(1);
set1.add(1);
System.out.println("set1 = " + set1);
set1.add(2);
set1.add(3);
System.out.println("set1 = " + set1);
set1.remove(1);
System.out.println("set1 = " + set1);
System.out.println(set1.size());
System.out.println(set1.contains(2));
System.out.println("== 집합 연산 ==");
HashSet a = new HashSet(Arrays.asList(1, 2, 3, 4, 5));
HashSet b = new HashSet(Arrays.asList(2, 4, 6, 8, 10));
a.retainAll(b);
System.out.println("교집합: " + a);
a.addAll(b);
System.out.println("합집합: " + a);
a.removeAll(b);
System.out.println("차집합 " + a);
}
}
ArrayList를 사용한 집합 구현 실습 (집합 관련 연산 사용x)
import java.util.ArrayList;
class MySet {
ArrayList<Integer> list;
MySet() {
this.list = new ArrayList<Integer>();
}
MySet(int[] arr) {
this.list = new ArrayList<Integer>();
for (int item : arr) {
this.list.add(item);
}
}
public void add(int x) {
for (int item : this.list) {
if (item == x) {
return;
}
}
this.list.add(x);
}
public MySet retainAll(MySet b) {
MySet result = new MySet();
for (int itemA : this.list) {
for (int itemB : b.list) {
if (itemA == itemB) {
result.add(itemA);
}
}
}
return result;
}
public MySet addAll(MySet b) {
MySet result = new MySet();
for (int itemA : this.list) {
result.add(itemA);
}
for (int itemB : b.list) {
result.add(itemB);
}
return result;
}
public MySet removeAll(MySet b) {
MySet result = new MySet();
for(int itemA:this.list){
boolean containFlag=false;
for(int itemB:b.list){
if(itemA==itemB){
containFlag=true;
break;
}
}
if(!containFlag) {
result.add(itemA);
}
}
return result;
}
}
public class Practice1 {
public static void main(String[] args) {
MySet a = new MySet();
a.add(1);
a.add(1);
a.add(1);
System.out.println(a.list);
a.add(2);
a.add(3);
System.out.println(a.list);
a = new MySet(new int[]{1, 2, 3, 4, 5});
MySet b = new MySet(new int[]{2, 4, 6, 8, 10});
System.out.println("a: " + a.list);
System.out.println("b: " + b.list);
MySet result = a.retainAll(b);
System.out.println("교집합: " + result.list);
result = a.addAll(b);
System.out.println("합집합: " + result.list);
result = a.removeAll(b);
System.out.println("차집합: " + result.list);
}
}