본문 바로가기

프로그램언어/자바

Collection 계열 클래스1

Set 계열

Set 계열의 클래스에 저장된 데이터들은 순서가 없고 중복이 되지 않는다. 

Set 인터페이스의 주요 구현 클래스에는 HashSet, LinkedHashSet, TreeSet이 있다.

 

메소드설명

함수 설명
boolean add(E e) 요소를 추가 (선택적 기능)
void clear() 모든 요소를 제거
boolean contains(Object o) 객체를 포함하고 있는지를 확인
boolean equals(Object o) 객체가 같은지를 확인
boolean isEmpty() 비어있는지를 확인
Iterator<E> iterator() 반복자(iterator)를 반환
boolean remove(Object o) 전달된 객체를 제거함. (선택적 기능)
int size() 요소의 총 개수를 반환
Object[] toArray() 모든 요소를 Object 타입의 배열로 반환

 

HashSet

HashSet은 Set 컬렉션을 구현하는 대표적인 클래스이다.

Set<E> 객체명 = new HashSet<E>();

 

요소추가와 iterator()로 반복자를 생성하여 데이터가져와 출력하기

import java.util.ArrayList

import java.util.HashSet;

import java.util.Iterator;

 

public class Main {

 

    public static void main(String[] args) {

        HashSet<Integer> A = new HashSet<Integer>();

        A.add(1);

        A.add(2);

        A.add(2);

        A.add(3);

        A.add(3);

        A.add(4);

        A.add(5);

 

        Iterator hi = A.iterator();

        while(hi.hasNext()){

            System.out.println(hi.next());

        }

    }

}

출력결과]
1
2
3
4
5

 

요소의 총 객체의 수와 객체 삭제,  모든 객체 삭제함수를 사용해보자.

import java.util.HashSet;

import java.util.Iterator

 

public class Main {

 

    public static void main(String[] args) {

        HashSet<Integer> A = new HashSet<Integer>();

        A.add(1);

        A.add(2);

        A.add(3);

        A.add(4);

        System.out.println("총 객체의 수 : " + A.size());

 

        A.remove(4);

        System.out.println("총 객체의 수 : " + A.size());

 

        A.clear();

        System.out.println("총 객체의 수 : " + A.size());

    }

}

총 객체의 수 : 4

총 객체의 수 : 3

총 객체의 수 : 0

 

객체를 포함하고 있는지 없는지 확인하는 함수를 사용해보자.

import java.util.HashSet;

import java.util.Iterator

 

public class Main {

 

    public static void main(String[] args) {

        HashSet<Integer> A = new HashSet<Integer>();

        A.add(1);

        A.add(2);

        A.add(3);

 

        HashSet<Integer> B = new HashSet<Integer>();

        B.add(4);

        B.add(5);

 

        HashSet<Integer> C = new HashSet<Integer>();

        C.add(1);

        C.add(2);

 
        // 지정한 요소가 Set에 포함되어 있는지 확인

        System.out.println(A.contains(2));

        System.out.println(A.contains(4));
        // 지정한 모든 요소가 Set에 포함되어 있는지 확인

        System.out.println(A.containsAll(B));

        System.out.println(A.containsAll(C));
    }

}

실행 결과]
true
false
false
true

 

HashSet, LinkedHashSet, TreeSet으로 요소를 추가하고 출력해보자.

import java.util.HashSet;

import java.util.LinkedHashSet;

import java.util.Set;

import java.util.TreeSet;

 

public class ex01 {

 

    public static void main(String[] args) {

        Set<String> set1 = new HashSet<>();

        set1.add("1");

        set1.add("3");

        set1.add("5");

        set1.add("2");

        set1.add("4");

        System.out.println(set1);

 

        Set<String> set2 = new LinkedHashSet<>();

        set2.add("1");

        set2.add("3");

        set2.add("5");

        set2.add("2");

        set2.add("4");

        System.out.println(set2);

 

        Set<String> set3 = new TreeSet<>();

        set3.add("1");

        set3.add("3");

        set3.add("5");

        set3.add("2");

        set3.add("4");

        System.out.println(set3);

    }

}

실행 결과]
[1, 2, 3, 4, 5]
[1, 3, 5, 2, 4]
[1, 2, 3, 4, 5]

 

 

학생 정보에서 학번을 중복체크하여 출력하기.

import java.util.HashSet;

import java.util.Iterator;

 

class Student {

    String number;

    String name;

 

    Student(String number, String name) {

        this.number = number;

        this.name = name;

    }

 

    String getNumber() {

        return number;

    }

 

    String getName () {

        return name;

    }

 

    public int hashCode() {

        return number.hashCode();

    }

 

    public boolean equals(Object obj) {

        if(obj instanceof Student) {

            Student temp = (Student)obj;

            return number.equals(temp.number);

        } else {

            return false;

        }

    }

 

}

public class Main {

 

    public static void main(String[] args) {

        HashSet<Student> hs = new HashSet<Student>();

 

        hs.add(new Student("20000301", "홍길동"));

        hs.add(new Student("20000301", "이순신"));

        hs.add(new Student("20000302", "일지매"));

        hs.add(new Student("20000303", "김삿갓"));

 

        System.out.println("총객체의수: " + hs.size());

 

        Iterator<Student> hi = hs.iterator();

 

        while(hi.hasNext()){

            Student student=hi.next();

 

            System.out.println(student.getNumber() + " " + student.getName());

        }

    }

 

}

실행결과]

총객체의수: 3

20000302 일지매

20000301 홍길동

20000303 김삿갓

'프로그램언어 > 자바' 카테고리의 다른 글

Collection 계열 클래스3  (0) 2020.11.14
Collection 계열 클래스2  (0) 2020.11.14
컬렉션 프레임워크 문제  (0) 2020.11.08
스윙 컴포넌트 그리기3  (0) 2020.11.05
스윙 컴포넌트 그리기2  (0) 2020.11.05