본문 바로가기
3.1 SpringBoot/Java

[Java/구현] 집합

by Dohi._. 2024. 8. 9.
728x90

집합(Set)

  • 특정 조건에 맞는 원소들의 모임
  • 집합 표현 방법
    • 원소나열법 : A = { 1, 2, 3, 4, 5 }
    • 조건제시법 : A = { A|A는 정수, 0<A<6 }
    • 벤 다이어그램자바에서는 주로 집합에 HashSet을 사용한다

Java로 표현

  1. HashSet - java에서 집합으로 사용
HashSet<Integer> a = new HashSet<>();
a.add(1);
a.add(1);
a.add(3);
a.add(1);
System.out.println(a);  //[1, 3]
  1. 직접구현
class MadeSet{ 
    ArrayList<Integer> list; 
    //기본생성자 
    MadeSet(){ 
    this.list = new ArrayList<Integer>(); 
    } 

    //원소 한개받고 처리 
    MadeSet(int a){ 
    this.list = new ArrayList<Integer>(a);
    list.add(a); 
    } 
    //배열받아 생성자 
    MadeSet(int[] arr){
    this.list = new ArrayList<Integer>(); 
    for(int a : arr){ 
        list.add(a); 
        }
    }
    //집합 원소 추가 
    public void add(int x){ 
    for(int a : this.list){ 
        if(item == x){
            return; // 같은값이 있으면 바로 탈출 
        } 
   }
   this.list.add(x); 
   }
}

교집합

  • 두 집합이 공통으로 포함하는 원소로 이루어진 집합
    → A∩B
  • HashSet a = new HashSet<>();

Java로 표현

  1. HashSet 교집합_set
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);

 

  1. 직접구현
//위(집합 직접구현)와 이어집니다

public MadeSet retainAll(MadeSet listB){  
MadeSet result = new MadeSet();  
    for(int a : this.list){  
        for(int b : listB.list){  
            if(a==b){  
                result.add(a);  
            }  
        }  
    }  
    return result;  
}

합집합

어느 하나의 집합에라도 속하는 원소들을 모두 모은 집합
→ A∪B

Java로 표현

  1. HashSet -합집합_set

HashSet a = new HashSet(Arrays.asList(1,2,3,4,5));  
HashSet b = new HashSet(Arrays.asList(2,4,6,8,10));

a.addAll(b);  
System.out.println(a);
  1. 직접구현
public MadeSet addAll(MadeSet listB){
	MadeSet result = new MadeSet();
	for(int a : this.list){
		result.add(a);
	}
	for(int b : listB){
		result.add(b);
	}
	return result;
}

차집합


특정한 하나의 집합(A)에만 속하는 원소들의 집합  
→ A - B

Java로 표현
1. HashSet - 차집합 set


HashSet a = new HashSet(Arrays.asList(1,2,3,4,5));
HashSet b = new HashSet(Arrays.asList(2,4,6,8,10));

a.removeAll(b);
System.out.println(a);

 


2. 직접구현 (A-B)

public MadeSet removeAll(MadeSet listB){
	MadeSet result = new MadeSet();
	for(int a : this.list){
		boolean cun = false;
		for(int b : listB){
			if(a==b){
				cun =true;
				break;
			}
		}
		if(!cun){
			result.add(a);
		}
	}
return result;
}

 

여집합

전체집합(U) 중 특정 집단의 원소가 아닌 것들의 집합
→ U - A → A^c or A' (차집합으로 구현가능)

728x90

'3.1 SpringBoot > Java' 카테고리의 다른 글

[Java] 웹 스크래핑하기 (Jsoup)  (2) 2024.10.05
[Java/기초] Stream  (0) 2024.08.05
[Java/기초] 주석  (0) 2024.07.22
[Java/기초] 스트림  (0) 2024.07.21
[JAVA/기초] 람다식  (2) 2024.07.20

댓글