본문 바로가기
프로그래밍 언어/JAVA(자바) 응용

46.중복되지 않게 자료를 관리하는 Set 인터페이스

by lroot 2022. 5. 31.
728x90
반응형

HashSet 클래스

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

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

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

 

예제

Member.java

public class Member {

private int memberId;
private String memberName;

public Member(int memberId, String memberName) {
this.memberId = memberId;
this.memberName = memberName;
}

public int getMemberId() {
return memberId;
}

public void setMemberId(int memberId) {
this.memberId = memberId;
}

public String getMemberName() {
return memberName;
}

public void setMemberName(String memberName) {
this.memberName = memberName;
}


@Override
public String toString() {
return memberName + " 회원님의 아이디는 " + memberId + "입니다.";
}

@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
Member member = (Member)obj;
if(this.memberId == member.memberId) {
return true;
}
else return false;
}
return false;
}

@Override
public int hashCode() {
return memberId;
}


}

 

- MemberHashSet.java

public class MemberHashSet {

private HashSet<Member> hashSet;

public MemberHashSet() {
hashSet = new HashSet<>();
}

public MemberHashSet(int size) {
hashSet = new HashSet<>(size);
}

public void addMember(Member member) {
hashSet.add(member);
}

/*
 * public boolean removeMember(int memberId) { for(int i=0; i<arrayList.size();
 * i++) { Member member = arrayList.get(i);
 * 
 * int tempId = member.getMemberId(); if(tempId == memberId) {
 * arrayList.remove(i); return true; } } System.out.println(memberId +
 * "가 존재하지 않음."); return false; }
 */

public boolean removeMember(int memberId) {
Iterator<Member> ir = hashSet.iterator();
while(ir.hasNext()) {
Member member = ir.next();
int tempId = member.getMemberId();
if(tempId == memberId) {
hashSet.remove(member);
return true;
}
}
System.out.println(memberId+"가 존재하지 않습니다.");
return false;
}



public void showAllMember() {
for(Member member : hashSet) {
System.out.println(member);
}
System.out.println();
}

}

 

- MemberHashSetTest.java

public class MemberHashSetTest {

public static void main(String[] args) {

MemberHashSet memberHashSet = new MemberHashSet();

Member memberLee = new Member(1000,"Lee");
Member memberKim = new Member(1001,"Kim");
Member memberKang = new Member(1002,"Kang");


memberHashSet.addMember(memberLee);
memberHashSet.addMember(memberKim);
memberHashSet.addMember(memberKang);

Member memberKong = new Member(1002,"Kong");

memberHashSet.addMember(memberKong);

memberHashSet.showAllMember();

}

}

댓글