import java.util.*;
public class Java {
public static void main(String[] args) {
Object[] objArr = {"1", new Integer(1), "2", "3", "4", "4", "4"};
Set set = new HashSet();
for(int i = 0; i < objArr.length; i++) {
set.add(objArr[i]); // HashSet에 objArr요소들을 저장한다. 중복 제외, 1은 숫자와 String이 각자 존재
}
// HashSet에 저장된 요소들을 출력한다.
System.out.println(set);
// HashSet에 저장된 요소들을 출력한다. (Iterator 이용)
Iterator it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
랜덤 5자리수
import java.util.*;
public class Java {
public static void main(String[] args) {
Set set = new HashSet(); // set의 크기가 6보다 작은 동안 1~45사이의 난수를 저장
for(int i = 0; set.size() < 6; i++) {
int num = (int)(Math.random()*45)+1;
set.add(num);
}
// System.out.println(set); // 랜덤수 랜덤 배치
List list = new LinkedList(set); // 랜덤수 작은수부터 차례로 배치
Collections.sort(list); // 정렬하기
System.out.println(list);
}
}
import java.util.*;
public class Java {
public static void main(String[] args) {
HashSet set = new HashSet<>();
set.add("abc");
set.add("abc"); // 중복이라 저장안됨
set.add(new Person("David",10));
set.add(new Person("David",10));
System.out.println(set);
}
}
// equals()와 hashCode()를 오버라이딩 해야 HashSet이 바르게 동작
class Person {
String name;
int age;
Person(String name, int age){
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
// int hash(Object... values); 가변인자
return Objects.hash(age, name);
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Person)) return false;
Person p = (Person) obj;
return age == p.age && Objects.equals(name, p.name); // 나자신(this)의 이름과 나이를 p와 비교
}
public String toString() {
return name + ":" + age;
}
}
contains() 함수를 통해 교집합
또는 retainAll() --> 코드 간단해짐
add() 함수를 통해 합집합
또는 addAll() --> 코드 간단해짐
removeAll() 함수를 통해 차집합