일단 시작해보는 블로그

[Java] HashSet 본문

개발/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
    }
}

 

Comments