본문 바로가기

Developer/Java-oop

#021. Collection HashSet<E> 알아보기...

#021. Collection HashSet<E> 알아보기...

 

1. HashSet 의 특징은 이전 시간에서 알아 봤듯이, 중복을 허용하지 않으며, 순서가 변경될 수 있다. 순서가 보장되지 않아 거의 사용을 하지는 않는다. 그래서 이번 시간엔, 데이터가 어떻게 들어가는지 디버그 화면을 통해 알아보겠다.

 

2. 테스트를 위해 util 패키지를 만들고, SetDemo class 를 만들어 아래의 코드를 작성해보자.

1) 먼저 HashSet 의 사용법을 익혀보자.

코드

package util;

import java.util.HashSet;

public class SetDemo {

    public static void main(String[] args) {

        HashSet<String> names = new HashSet<String>();

        names.add("김동혁");    //추가

        names.add("이연희");

        names.add("김준호");

        System.out.println("김동혁 포함여부..: " + names.contains("김동혁") );

        System.out.println("names 가 비었는지 확인: " + names.isEmpty() );

        names.add("김동혁");    //데이터 중복 추가

        names.remove("김준호"); //삭제

        //데이터 추출

        for(String name : names){

            System.out.println(name);

        }

        System.out.println("원소의 갯수: " + names.size());

        names.clear(); //모두삭제

    }

}

결과

김동혁 포함여부..: true

names 가 비었는지 확인: false

이연희

김동혁

원소의 갯수: 2

설명

문장2: HashSet 을 사용하기 위해서는 java.util.HashSet 을 Import 해야 한다.

문장5: HashSet 의 객체를 생성하고, 타입은 String이 들어갈 수 있도록 지정했다.

문장6~8: names 객체에 item 을 추가한다.

문장9: names 객체에 "김동혁" 이 존재하는지 확인한다.

문장10: names 객체에 아무것도 없는지 확인한다.

문장11: names 객체에 "김동혁" 를 추가하는데, 기존에 "김동혁"이 들어있기 때문에 중복으로 들어간다...(하지만, Set Collection 의 특징상 중복은 허용하지 않지만, 오류가 발생하거나 하지는 않는다.)

문장12: names 객체에 "김준호" item 을 삭제한다.

문장14~16: 데이터를 끄집어내어 화면에 출력한다.

문장17: item 의 갯수를 출력해본다.

문장18: item 을 모두 삭제한다.

결과5: 원소는 김동혁,이연희,김동혁 셋을 추가했지만, 김동혁이 중복되어 들어가지도 않았다는 걸 확인 할 수 있다.

 

여기서 중요한 것은 item 의 중복을 허용하지 않는다는 것이다.

 

3. HashSet 의 특징 중 순서가 보장되지 않는 것을 디버그 화면을 통해 알아보자.

1) 디버그로 실행하는 방법

설명

디버그를 하기 위해서는 앞에 번호에서 더블클릭을 하면, 점이 하나 생긴다. 이점은 브레이크 포인트라고 한다. 디버그 중 그 행이 실행될 때 잠시 멈추고, 개발자가 다음 명령을 내릴 때까지 대기한다.

테스트를 위해 문장 6번에 걸고 시작하겠다.

디버그 실행은 상단에 풍뎅이를 누른다.

 

2) 디버그 화면 중 각 변수의 값 확인

설명

좌측에 문장6에서 멈춘 것을 확인할 수 있다.

Variables 창이 각 변수가 담고 있는 값을 표시 하는 창이다.

 

3) 디버그상에서 값 확인하기

설명

F5 번 또는 우측상단에 저 모양을 눌러서 문장6의 코드를 실행한 화면이다.

우측에 variables 에 [4] 칸. 즉, 5번째 배열에 들어가는 것을 확인 할 수 있다.

순서를 보장한다면, 0번 부터 들어 갈 것이다.

다음시간에 배울 List를 보면 확실히 알것이다.

 

4) 디버그상에서 값 확인하기 (위 상태에서 한번 더 F5 눌러서 진행하기)

설명

본문 3-3) 에서 F5 를 눌러서 한번 더 확인한 모습이다. (문장7 을 실행한 뒤 모습)

우측에 [2] 칸. 즉, 3번째 배열에 들어가는 것을 확인할 수 있다.

 

다음시간에는 Collection ArrayList<E> 에 대해서 알아보자...

 

잡담: 모두 열심히.. 화이팅 하세요 ^^!