Java/패스트캠퍼스

Set 인터페이스 구현 클래스

hs_developer 2022. 6. 12. 01:20

HashSet 클래스

 

-Set 인터페이스를 구현한 클래스

 

-멤버의  중복 여부를 체크하기 위해 인스턴스의 동일성을 확인해야 함

 

-동일성 구현을 위해 필요에 따라 equals()와 hashCode() 메서드를 재정의

 

 

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Member {

	// 멤버 변수 선언
	private int memberId;
	private String memberName;
	
	// 생성자 초기화
	public Member(int memberId, String memberName)
	{
		this.memberId = memberId;
		this.memberName = memberName;
	}
	
	@Override
	public String toString() { // toString 메서드 오버로딩

		return memberName + " 회원님의 아이디는 " + memberId + "입니다.";
	}

	// 동일성 구현
	@Override
	public int hashCode() {
		return memberId;
	}

	@Override
	public boolean equals(Object obj) {

		if(obj instanceof Member)
		{
			Member m = (Member)obj;
			
			if(this.memberId == m.memberId)
				return true;

			else return false;
		}
		return false;
		
	}
	
}
import java.util.HashSet;
import java.util.Iterator;

public class MemberHashSet {

	private HashSet<Member> hashSet; // ArrayList 선언
	
	public MemberHashSet()
	{
		hashSet = new HashSet<Member>(); // 멤버로 선언한 ArrayList 생성
	}
	
	public void addMember(Member m) // ArrayList에 멤버 추가
	{
		hashSet.add(m);
	}
	
	public boolean removeMember(int memberId)
	{
		Iterator<Member> ir = hashSet.iterator();
		
		while(ir.hasNext())
		{
			Member m = ir.next();
			int tempId = m.getMemberId();
			
			if(tempId == memberId)
			{
				hashSet.remove(m);
				return true;
			}
		}
		
		System.out.println(memberId + "가 존재하지 않습니다.");
		return false;
	}
	
	// 전체 멤버 출력
	public void showAllMember()
	{
		for(Member m:hashSet)
		{
			System.out.println(m);
		}
	}
	
	
}
public class MemberHashSetTest {

	public static void main(String[] args) {
		
		MemberHashSet mhs = new MemberHashSet();
		
		// 멤버 선언
		Member Lee = new Member(1001, "이순신");
		Member Kim = new Member(1002, "김유신");
		Member Kang = new Member(1003, "강감찬");
		
		// 멤버 추가
		mhs.addMember(Lee);
		mhs.addMember(Kim);
		mhs.addMember(Kang);
		
		// 아이디가 동일한 경우 같은 멤버이므로 중복되지 않도록 
		// Member 클래스의 equals()와 HashCode() 메서드 재정의 함
		Member Hong = new Member(1003, "홍길동");
		mhs.addMember(Hong);
		
		// 멤버 출력
		mhs.showAllMember();
		
	}
}

'Java > 패스트캠퍼스' 카테고리의 다른 글

제네릭  (0) 2022.06.12
Map 인터페이스 구현 클래스  (0) 2022.06.12
Iterator  (0) 2022.06.11
List 인터페이스 구현 클래스  (0) 2022.06.11
Object 클래스  (0) 2022.06.09