Set

강영우·2024년 2월 19일
0

선형 자료구조

목록 보기
7/7

집합

특정 조건에 맞는 원소들의 모임

  • 교집합 ABA \cap B
    두집합이 공통으로 포함하는 원소로 이루어진 집합
  • 합집합 ABA \cup B
    어느 하나에라도 속하는 원소들을 모두 모은 집합
  • 차집합 ABA - B
    A에만 속하는 원소들의 집합
  • 여집합
    전체 집합중에서 A의 원소가 아닌것들의 집합

교집합

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);

retainAll메소드를 통해 교집합만 남길 수 있다.

합집합

a.addAll(b);

addAll메소드를 통해 합집합을 만들 수 있다.

차집합

a.removeAll(b);

removeAll 메소드를 통해 차집합을 만들 수 있다.

Set 구현

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) {
        	for(int itemB : b.list) {
            	if(itemA == itemB){
                	continue;
				}
                result.add(itemA);
			}
		}
    	return result;
    }
}
profile
배움의 연속을 매순간 저장하는

0개의 댓글