import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class HashSetExample1 {
public static void main(String[] args) {
//Set컬렉션? 특징 - 순서 유지안됨(주머니), 중복불가
//1)HashSet 클래스
//<> 제네릭에서 사용하는 타입파라미터
Set<String> set = new HashSet<String>();
//데이터 저장하기
set.add("Java");
set.add("JDBC");
set.add("Servlet/JSP");
set.add("Java");
set.add("MyBatis");
int size = set.size();
System.out.println("총 객체수: " + size); // 4
System.out.println();
//데이터 읽어오기(반복자: Iterator)
Iterator<String> iterator = set.iterator();
// iterator객체가 참조하는 현재위치에 데이타 존재유무체크
while(iterator.hasNext()) {
String element = iterator.next(); // 데이타를 읽고, 커서위치를 다음으로 이동
System.out.println("\t" + element);
}
set.remove("JDBC");
set.remove("MyBatis");
System.out.println("총 객체수: " + set.size()); // 2
//데이터 읽어오기 - 향상된 for문
for(String element : set) {
System.out.println("\t" + element);
}
set.clear(); // 컬렉션의 모든 요소제거.
if(set.isEmpty()) { System.out.println("비어 있음");}
}
}
예제
public class Member /* extends Object */ {
public String name;
public int age;
public Member(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
System.out.println("객체비교시 hashCode() 호출");
return name.hashCode() + age;
}
// new Member("김동연", 30)
// new Member("김동연", 30)
@Override
public boolean equals(Object obj) {
System.out.println("객체비교시 equals() 호출");
if(obj instanceof Member) {
Member member = (Member) obj;
return member.name.equals(name) && (member.age == age);
}else {
return false;
}
}
//추가작업
}
import java.util.HashSet;
import java.util.Set;
public class HashSetExample2 {
public static void main(String[] args) {
Set<Member> set = new HashSet<Member>();
//객체를 추가시, 동일한 객체로 처리하고 싶을 경우에는 hashCode(), equals() 메소드를 동일한 객체가 되도록 구현해야 한다.(중요: 암기)
set.add(new Member("김동연", 30)); // 번지(주소)가 참조
set.add(new Member("김동연"", 30)); // 번지(주소)가 참조
System.out.println("총 객체수: " + set.size());
/* "김동연" 힙영역의 주소를 재사용.
String name = "김동연";
String name2 = "김동연";
*/
}
}
'JAVA' 카테고리의 다른 글
컬렉션 프레임웤 Hashtable (0) | 2022.10.11 |
---|---|
컬렉션 프레임웤 HashMap (1) | 2022.10.11 |
컬렉션 프레임웤 linkedlist (0) | 2022.10.10 |
String 클래스 문자열 비교(equals()) 예제 (0) | 2022.10.07 |
String 문자추출(charAt()) 메소드 (0) | 2022.10.07 |