HashSet를 알아봅시다! 😉
오늘은 HashSet에 대해서 알아봅시다.
개념
HashSet은 Set 인터페이스를 구현한 클래스입니다. 그렇기 때문에 Set의 성질을 그대로 상속받습니다.
HashSet의 특징을 봅시다!
- 순서가 없다.
- HashMap과 달리 key값이 존재하지 않는다.
- 중복을 허용하지 않는다.
- 어떤 데이터를 중복 없는 묶음 (집합) 으로 관리하고자 할 때 사용된다.
가장 중요한 성질은 중복을 자동으로 걸러준다는 것 입니다.
사용법
import java.util.HashSet;
HashSet을 사용하기 위해서는 위 문장을 import 해야합니다.
데이터 추가 - add(e)
set1.add("이00");
set1.add("박00");
set1.add("김00");
set1.add("김00"); //중복불가
add를 사용해서 데이터를 추가해줍니다. 이때 중복된 데이터는 추가되지 않습니다.
데이터 포함 여부 확인 - contains
boolean result = set1.contains("이00");
데이터 포함 여부를 확인하기 위해서는 contains을 사용합니다. 포함되어 있으면 true, 아니면 false를 반환합니다.
데이터 삭제 - remove
boolean isDelete = set1.remove("이00");
데이터를 삭제하기 위해서 remove를 사용합니다. 삭제를 시도하고 성공여부를 리턴합니다.
크기 - size()
int size = set1.size();
size을 사용하면 집합 크기를 반환합니다.
집합 아이템 출력 - Iterator 사용
//반복자 객체를 얻어낸다.
Iterator<String> it = set1.iterator();
//반복문 돌면서
while(it.hasNext()) {
//아이템을 하나씩 불러내서 출력하기
String item = it.next();
System.out.println(item);
}
Iterator를 사용하여 순서가 있게 만들어줍니다.
그 다음에 while문을 사용하여 아이템을 하나씩 불러내서 출력해줍니다.
예제
예제 1 - 로또번호 1~45 중의 숫자중 랜덤하게 6개를 중복 없이 얻어내서 콘솔창에 출력하는 프로그래밍을 해보세요.
package test.main;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
public class MainClass10 {
public static void main(String[] args) {
/*
* 로또번호 1~45 중의 숫자중 랜덤하게 6개를 중복 없이 얻어내서 콘솔창에 출력하는 프로그래밍을 해
* 보세요.
*/
//랜덤한 숫자를 얻어낼 객체
Random ran=new Random();
//랜덤한 숫자를 저장할 객체
Set<Integer> lottoSet=new HashSet<>();
while(true) {
//1 ~ 45 사이의 랜덤한 숫자 얻어내기
int ranNum=ran.nextInt(45)+1;
//얻어낸 숫자를 Set 에 저장하기
lottoSet.add(ranNum);
//만일 lottoSet 의 size 가 6 이면 반복문 탈출
if(lottoSet.size() == 6) {
break;
}
}
Iterator<Integer> it=lottoSet.iterator();
while(it.hasNext()) {
int num=it.next();
System.out.print(num+",");
}
}
}
'Languages > JAVA' 카테고리의 다른 글
[JAVA] 랜덤 숫자(난수) 생성하기 - Random , Math (3) | 2021.11.09 |
---|---|
[JAVA] 자바 자료형 알아보기 #6 - 배열을 이해해보자 / clone() / 확장 for 문 등 (0) | 2021.11.09 |
[JAVA] HashMap의 개념, 사용법, 예제 (0) | 2021.11.08 |
[JAVA] ArrayList 의 개념, 사용법, 예제 (0) | 2021.11.08 |
[JAVA] 이클립스에서 import 하는 방법들, 단축키 (0) | 2021.11.05 |