JAVA

컬렉션 프레임웤 Set 컬렉션

연93 2022. 10. 11. 08:49
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