🌱 오늘의 주제 : HashSet
🌱 HashSet
- Set 인터페이스를 구현한 가장 대표적인 컬렉션
- 중복된 요소를 저장하지 않는다.
- 저장 순서를 유지하지 않는다. 저장순서를 유지하고자 한다면 LinkedHashSet을 사용해야 한다.
🌱 HashSet 예제
package chapter11_p;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Ex11_9 {
public static void main(String[] args) {
// HashSet 예제1
Object[] objArr = {"1", new Integer(1), "2", "2", "3", "3", "4", "4", "4"};
Set set = new HashSet();
for(int i = 0; i < objArr.length; i++) {
set.add(objArr[i]); // HashSet에 objArr의 요소들을 저장한다. set.add
}
System.out.println(set);
Iterator it = set.iterator(); // HashSet에 저장된 요소들을 출력한다. (Iterator이용)
while(it.hasNext()) { // 읽어올 요소가 있는지 확인
System.out.println(it.next()); // 요소 하나 꺼내오기
}
}
}
//--------
//[1, 1, 2, 3, 4]
//1
//1
//2
//3
//4
package chapter11_p;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class Ex11_10 {
public static void main(String[] args) {
// HashSet 예제2
Set set = new HashSet();
for (int i = 0; set.size() < 6; i++) {
int num = (int)(Math.random()*45) + 1;
set.add(num);
}
// set은 정렬이 불가하기 때문에, 정렬하기 위해서는, Collections클래스의 sort(List list)를 사용.
// 이 메서드는 List 인터페이스 타입을 필요로 하기 때문에, LinkedList(Collection c) 클래스의 생성자 이용.
List list = new LinkedList(set); // LinkedList(Collection c) set에 모든 요소를 list에 저장.
Collections.sort(list); // Collections.sort(List list)
System.out.println(list);
}
}
//---------
//[2, 21, 30, 36, 37, 45]
package chapter11_p;
import java.util.HashSet;
import java.util.Iterator;
public class Ex11_12 {
public static void main(String[] args) {
// HashSet 예제4
HashSet setA = new HashSet();
HashSet setB = new HashSet();
HashSet setHab = new HashSet();
HashSet setKyo = new HashSet();
HashSet setCha = new HashSet();
setA.add("1");
setA.add("2");
setA.add("3");
setA.add("4");
setA.add("5");
System.out.println("A = " + setA);
setB.add("4");
setB.add("5");
setB.add("6");
setB.add("7");
setB.add("8");
System.out.println("B = " + setB);
Iterator it = setB.iterator();
while(it.hasNext()) {
Object tmp = it.next();
if(setA.contains(tmp)) { // 교집합
setKyo.add(tmp);
}
}
it = setA.iterator();
while(it.hasNext()) {
Object tmp = it.next();
if(!setB.contains(tmp)) { // 차집합
setCha.add(tmp);
}
}
it = setA.iterator();
while(it.hasNext()) { //합집합
setHab.add(it.next());
}
it = setB.iterator();
while(it.hasNext()) { //합집합
setHab.add(it.next());
}
System.out.println("A와 B의 교집합 = " + setKyo);
System.out.println("A와 B의 합집합 = " + setHab);
System.out.println("A와 B의 차집합 = " + setCha);
}
}
//
//--------
//A = [1, 2, 3, 4, 5]
//B = [4, 5, 6, 7, 8]
//A와 B의 교집합 = [4, 5]
//A와 B의 합집합 = [1, 2, 3, 4, 5, 6, 7, 8]
//A와 B의 차집합 = [1, 2, 3]
'Java' 카테고리의 다른 글
Java - 내부 클래스(inner class) (0) | 2023.02.07 |
---|---|
Java - HashMap (0) | 2023.02.04 |
Java - Arrays의 메서드 (0) | 2023.02.04 |
Java - LinkedList (0) | 2023.02.03 |
Java - ArrayList (0) | 2023.02.03 |