#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> 에 대해서 알아보자...
잡담: 모두 열심히.. 화이팅 하세요 ^^!
'Developer > Java-oop' 카테고리의 다른 글
#023. Collection HashMap<K,V> 알아보기... (0) | 2011.04.11 |
---|---|
#022. Collection ArrayList<E> 알아보기... (0) | 2011.04.10 |
#020. Collection Set / List / Map 알아보자... (0) | 2011.04.08 |
#019. final 예약어 알아보기... (0) | 2011.04.08 |
#018. Interface (인터페이스) 알아보기... (0) | 2011.04.07 |