티스토리 뷰

development/Java

[Java] Util Class #3 HashSet

Happyoon ~ 2021. 11. 9. 00:36
728x90
반응형

저번 게시물에서는 HashMap에 대해 다뤄보았다.

이번 게시물에서는 HashSet에 대해 알아보자.


[ HashSet ]

- HashSetSet 인터페이스를 구현한 클래스이다.
- 순서가 없다.
- key 값도 없다.
- 중복을 허용하지 않는다.
- 어떤 데이터를 중복 없는 묶음(집합)으로 관리하고자 할 때 사용한다.

 

주요 메소드

.add(elem) //원소 추가
.contains(elem) //elem을 포함하는지 여부
.remove(elem) //삭제를 시도하고 성공 여부 반환

"주요 메소드 활용해보기"

 

예제 1 

1. HashSet 객체를 생성하고 Generic이 String인 Set 타입의 지역변수 set1에 참조값을 담아보자.

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

 

 

2. set1에 데이터를 추가해보자.

//데이터 추가
set1.add("김구라");
set1.add("해골");
set1.add("원숭이");
set1.add("원숭이");//중복 불가

 

중복된 데이터를 추가할 수 없는 모습을 확인할 수 있다.

 

 

3. "해골" 을 원소로 가지고 있는지 확인해보자.

boolean result = set1.contains("해골"); //true

 

 

4. "원숭이"를 삭제해보고 삭제를 성공하였는지 여부를 isDelete 지역변수에 담아보자.

boolean isDelete = set1.remove("원숭이");

 

 

5. 반복문 객체를 활용하여 아이템을 하나씩 출력해보자.

//반복문 객체를 얻어낸다.
Iterator<String> it = set1.iterator();
//반복문 돌면서
while(it.hasNext()) {
	//아이템을 하나씩 불러내서 출력하기
	String elem = it.next();
	System.out.println(elem);
}

전체 코드

MainClass09.java

package test.main;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/*
 * HashSet은 Set 인터페이스를 구현한 클래스이다.
 * 
 * - 순서가 없다.
 * - key 값도 없다.
 * - 중복을 허용하지 않는다.
 * - 어떤 데이터를 중복 없는 묶음(집합)으로 관리하고자 할 때 사용한다.
 */
public class MainClass09 {
	public static void main(String[] args) {
		Set<String> set1 = new HashSet<>();
		
		//데이터 추가
		set1.add("김구라");
		set1.add("해골");
		set1.add("원숭이");
		set1.add("원숭이");//중복 불가
		
		boolean result = set1.contains("해골"); //true
		boolean isDelete = set1.remove("원숭이");//삭제를 시도하고 성공 여부를 리턴한다.
		
		//반복문 객체를 얻어낸다.
		Iterator<String> it = set1.iterator();
		//반복문 돌면서
		while(it.hasNext()) {
			//아이템을 하나씩 불러내서 출력하기
			String elem = it.next();
			System.out.println(elem);
		}
	}

}

예제 2

로또번호 1~45 중의 숫자 중 랜덤하게 6개를 중복 없이 얻어내서 콘솔창에 출력하는 프로그래밍을 해보세요. 

 

MainClass10.java

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 rand = new Random();
		
		Set<Integer> set1 = new HashSet<>();
		while(true) {
			if(set1.size()==6) {
				break;
			}
			else {
				set1.add(rand.nextInt(45)+1);
			}
		}
		
		Iterator<Integer> it = set1.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		
	}

}

예제 3

 

1. String type을 저장할 수 있는 ArrayList 객체 생성해서 참조값을 msgs 라는 지역 변수에 담아보세요.

List<String> msgs = new ArrayList<>();

 

 

2. msgs에 문자열 2개를 담아보세요.

msgs.add("hello");
msgs.add("Bye");

 

 

3. Map<String,Object> type을 저장할 수 있는 ArrayList 객체 생성해서 참조값을 maps라는 지역 변수에 담아보세요.

List<Map<String,Object>> maps = new ArrayList<>();

 

 

4. maps에 두 개의 Map 객체를 담아보세요. 각각의 Map 객체는 회원 한 명의 정보를 가지고 있으면 됩니다.

Map<String,Object> m1 = new HashMap<>();
Map<String,Object> m2 = new HashMap<>();
		
m1.put("num", 1);
m1.put("name", "김ㅇㅇ");
m1.put("addr", "광진구");
		
maps.add(m1);
		
m2.put("num", 2);
m2.put("name", "이ㅇㅇ");
m2.put("addr", "송파구");

maps.add(m2);

 

 

5. maps 가변 배열에 저장된 값을 이용해서 회원 목록을 아래와 같은 형식으로 반복문을 활용해서 출력되도록 해보세요.

 

번호 => 1, 이름 => 김구라, 주소 => 노량진
 번호 => 2, 이름 => 해골, 주소 => 행신동

for(int i=0;i<maps.size();i++) {
	System.out.println("번호 => "+maps.get(i).get("num")+", 이름=> "+maps.get(i).get("name")+", 주소=> "+maps.get(i).get("addr"));
}

전체 코드

MainClass11.java

package test.main;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/*
 * List 는 javascript 에서 [ ]와 유사
 * Map은 javascript 에서 { }와 유사
 * 
 * List<String>은 javascript 에서 ["aaa", "bbb", "ccc", .. ]와 유사
 * List<Integer>은 javascript 에서 [10, 20, 30, 40, ...]와 유사
 * List<Map>은 javascript에서 [{}, {}, {}, ... ]와 유사
 */
public class MainClass11 {
	public static void main(String[] args) {
		
		//String type을 저장할 수 있는 ArrayList 객체 생성해서 참조값을 msgs 라는 지역 변수에 담아보세요.
		List<String> msgs = new ArrayList<>();
		
		//msgs에 아무거나 문자열 2개를 담아보세요.
		msgs.add("hello");
		msgs.add("Bye");
		
		//Map<String,Object> type을 저장할 수 있는 ArrayList 객체 생성해서
		//참조값을 maps라는 지역 변수에 담아보세요.
		List<Map<String,Object>> maps = new ArrayList<>();
		
		//maps에 두 개의 Map 객체를 담아보세요.
		Map<String,Object> m1 = new HashMap<>();
		Map<String,Object> m2 = new HashMap<>();
		
		//각각의 Map 객체는 회원 한 명의 정보를 가지고 있으면 됩니다.
		m1.put("num", 1);
		m1.put("name", "김ㅇㅇ");
		m1.put("addr", "광진구");
		
		maps.add(m1);
		
		m2.put("num", 2);
		m2.put("name", "이ㅇㅇ");
		m2.put("addr", "송파구");

		maps.add(m2);
		
		
		
		//maps 가변 배열에 저장된 값을 이용해서 회원 목록을 아래와 같은 형식으로
		//반복문을 활용해서 출력되도록 해보세요.
		/*
		 * 번호 => 1, 이름 => 김구라, 주소 => 노량진
		 * 번호 => 2, 이름 => 해골, 주소 => 행신동
		 * .
		 * .
		 * .
		 */
		for(int i=0;i<maps.size();i++) {
			System.out.println("번호 => "+maps.get(i).get("num")+", 이름=> "+maps.get(i).get("name")+", 주소=> "+maps.get(i).get("addr"));
		}
		
		
	}

}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함