728x90
반응형
Set 인터페이스 계열
-
저장 순서를 유지하지 않고, 데이터 중복을 허용하지 않는 구조
하나의 주머니에 무작위로 저장하는 구조와 동일함
-
대표적인 구현체 클래스 : HashSet, TreeSet 등
package collection_framework;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Ex_Set {
public static void main(String[] args) {
Set set = new HashSet();
System.out.println("Set 객체가 비어있는가? " + set.isEmpty());
System.out.println("Set 객체에 저장된 요소 갯수 : " + set.size());
// add(Object o) : 모든 타입의 데이터 추가
set.add(1);
set.add("TWO");
set.add(3.14);
System.out.println("Set 객체가 비어있는가? " + set.isEmpty());
System.out.println("Set 객체에 저장된 요소 갯수 : " + set.size());
// toString() 메서드가 오버라이딩 되어 있으므로 요소 출력 가능
System.out.println("Set 객체에 저장된 모든 요소 : " + set.toString());
System.out.println("Set 객체에 저장된 모든 요소 : " + set);
System.out.println("정수 1 추가 가능한가? " + set.add(1));
System.out.println("정수 4 추가 가능한가? " + set.add(4));
System.out.println("Set 객체에 저장된 모든 요소 : " + set);
set.add('5');
set.add("육");
System.out.println("Set 객체에 저장된 모든 요소 : " + set);
// contains(Object o) : 해당 요소 존재 여부 리턴
System.out.println("문자열 TWO 가 포함되어 있는가? " + set.contains("TWO"));
System.out.println("문자열 5 가 포함되어 있는가? " + set.contains("5"));
// remove(Object o) : 해당 요소 제거
System.out.println("문자열 육 제거 결과 : " + set.remove("육"));
System.out.println("Set 객체에 저장된 모든 요소 : " + set);
// Object[] toArray() : 컬렉션 객체를 배열로 변환
Object[] arr = set.toArray();
System.out.println(Arrays.toString(arr)); // 배열 내용 출력
// clear() : 컬렉션 객체 초기화(모든 요소 제거)
set.clear();
System.out.println("Set 객체가 비어있는가? " + set.isEmpty());
System.out.println("Set 객체에 저장된 요소 갯수 : " + set.size());
System.out.println("Set 객체에 저장된 모든 요소 : " + set);
// 컬렉션 객체의 데이터를 꺼내는 공통 방법
// 1. 향상된 for문 사용
// for(Object o : set) {
// // 저장되는 데이터타입이 Object 타입이므로
// // 다양한 데이터를 모두 저장할 수 있도록 Object 타입 변수에 저장
// System.out.println("저장된 요소 : " + o);
// }
// 2. Iterator(반복자) 객체 사용
// Set 객체의 iterator() 메서드를 호출하여 Iterator 객체 리턴받음
// Iterator ite = set.iterator();
//
// // while문을 사용하여 저장된 요소가 존재할 동안 반복
// while(ite.hasNext()) { // 다음 요소 존재 여부 판별
// Object o = ite.next(); // 다음 요소 꺼내기
// System.out.println("저장된 요소 : " + o);
// }
System.out.println("====================================");
Set set2 = new HashSet();
// set2.add("1번");
// set2.add("222번");
// set2.add("34번");
// set2.add("4번");
// set2.add("595번");
// set2.add("6번");
set2.add(1);
set2.add(222);
set2.add(34);
set2.add(4);
set2.add(595);
set2.add(6);
System.out.println(set2);
// Set 계열 구현체 클래스 중 정렬 기능을 제공하는 클래스 : TreeSet
// => 주의! 동일한 데이터타입만 저장 가능(정렬을 위해서)
Set treeSet = new TreeSet(set2);
// => 컬렉션 객체 생성 시 다른 컬렉션 객체를 전달하여 초기화 가능
System.out.println(treeSet);
Set set3 = new TreeSet();
set3.add(10);
set3.add(20);
System.out.println(set3);
// addAll() : 기존 컬렉션 객체에 다른 컬렉션 요소를 한 번에 추가
set3.addAll(treeSet);
System.out.println(set3);
Set set4 = new HashSet(set3);
System.out.println(set4);
// equals() : 두 컬렉션 객체의 요소가 같은지 판별
System.out.println("set3 와 set4 는 같은가? " + set3.equals(set4));
}
}
package collection_framework;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
public class Test_Set {
public static void main(String[] args) {
/*
* Set 객체를 활용한 로또 번호 생성기
* - 중복되지 않는 1 ~ 45 범위의 난수 6개를 저장
* - 저장되는 난수는 오름차순 정렬
*/
Random r = new Random();
for(int i = 1; i <= 10; i++) {
Set myLotto = new TreeSet();
// 저장되는 요소(난수) 갯수가 6개보다 작을 동안 반복
while(myLotto.size() < 6) {
// 1 ~ 45 사이 난수 1개를 생성하여 myLotto 에 추가
myLotto.add(r.nextInt(45) + 1);
}
System.out.println("나의 로또 번호 : " + myLotto);
// ================================================
// 1등 당첨번호(1, 11, 21, 31, 41, 42)와 비교하여
// 일치하는 번호 갯수 출력
Set thisWeekLotto = new TreeSet();
thisWeekLotto.add(1);
thisWeekLotto.add(11);
thisWeekLotto.add(21);
thisWeekLotto.add(31);
thisWeekLotto.add(41);
thisWeekLotto.add(42);
int count = 0; // 일치하는 번호 갯수를 저장하는 변수 선언
for(Object o : myLotto) {
// 하나의 요소가 다른 컬렉션 내에 존재하는지 판별
if(thisWeekLotto.contains(o)) {
count++; // 카운트 증가
}
}
System.out.println("1등 당첨 번호 : " + thisWeekLotto);
System.out.println("일치하는 번호 갯수 : " + count + "개");
System.out.println("------------------------------------");
}
}
}
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 자바 컬렉션 프레임워크 - Map 편 (0) | 2021.01.19 |
---|---|
[JAVA] 자바 컬렉션 프레임워크 - List 편 (0) | 2021.01.19 |
[JAVA] 자바가 제공하는 패키지 (0) | 2021.01.19 |
[JAVA] 자바의 예외처리 Exception (0) | 2021.01.19 |
[JAVA] 자바의 인터페이스 Interface (0) | 2021.01.19 |