본문 바로가기
개발일지/임시카테고리

java - class 생성 후 반복문 돌리며, 합집합, 차집합, 교집합

by 다니엘의 개발 이야기 2024. 12. 31.
320x100

java는 여전히, "작성 된" 코드를 보면, 무슨 내용인지 "추측"은 가능 하지만,

내가 작성 하라면, 진짜 기초 중의 기초 루틴 public ~ 하고 출력하는 것 외에는 아직

너무 모자란 것 같다.

 

알고리즘도 배우면서, java 기초도 분명히 해야겠다.

// import java.util.Arrays;
// import java.util.HashSet;
import java.util.ArrayList;

// ArrayList
class MySet {
    ArrayList<Integer> list;

    // 생성자1
//    객체
    MySet() {
        this.list = new ArrayList<Integer>();
    }

    // 생성자2
//    데이터를 담게되는 생성자
    MySet(int[] arr) {
        this.list = new ArrayList<Integer>();

        for (int item : arr) {
            this.list.add(item);
        }
    }

    // 원소 추가 (중복 x)
    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 Main {
    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);
    }
}
300x250