Set 인터페이스(저장 순서 X, 데이터 중복 X)

public static void main(String[] args) {
Object[] objArr = {"2", "2", "1", "3", "3", new Integer(1), "4", "4", "4"};
Set set = new HashSet();
for(int i=0; i< objArr.length; i++){
set.add(objArr[i]);
}
// HashSet 에 저장된 요소들을 출력한다.
System.out.println("set = " + set);
// set = [1, 1, 2, 3, 4]
// 순서를 유지하고 중복을 제거
Set set1 = new LinkedHashSet();
for(int i=0; i< objArr.length; i++){
set1.add(objArr[i]);
}
System.out.println("set1 = " + set1);
// set1 = [2, 1, 3, 1, 4]
}
public static void main(String[] args) {
Set set = new HashSet();
for(int i = 0; set.size() <6; i++){
int num = (int)(Math.random()*45)+1;
set.add(new Integer(num));
}
// set = [34, 35, 23, 40, 13, 29]
// set 은 정렬할 수가 없음
System.out.println("set = " + set);
// set 을 List 로 옮기고, List 를 정렬해야 함
List list = new LinkedList(set);
Collections.sort(list);
System.out.println("list = " + list);
}
public class HashSet3 {
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)); // equals()와 hashCode() 오버라이딩으로 중복 삭제
System.out.println("set = " + set);
}
}
class Person {
String name;
int age;
Person(String name, int age){
this.name = name;
this.age = age;
}
public String toString() {
return name +":"+age;
}
}
/*
set = [abc, David:10, David:10]
*/
@Override
public boolean equals(Object obj){
if(!(obj instanceof Person)) return false;
Person p = (Person)obj;
return name.equals(p.name) && age==p.age;
}
@Override
public int hashCode(){
return Objects.hash(name, age);
}
/*
set = [abc, David:10]
*/
참고자료
[자바의 정석 - 기초편] ch11-37,38 HashSet(2)
1211 TIL: equals()