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 |