package set;
public class Member {
private int memberID;
private String memberName;
public Member() {}
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;
}
public String toString() {
return memberName + "회원님의 아이디는 " + memberID +" 입니다.";
}
// Set 에서 중복을 방지하려면 MemberID 값이 같으면 true로 리턴 , hashCode도 정의해줘야한다.
@Override
public boolean equals(Object obj) {
Member member = (Member)obj; // 다운캐스팅
if(member.memberID == memberID) {
return true;
} else {
return false;
}
}
@Override
public int hashCode() {
return memberID;
}
}
package set;
import java.util.HashSet;
import java.util.Iterator;
public class MemberHashSet {
// HashSet 으로 멤버들을 관리해 보기
private HashSet<Member> hashset;
public MemberHashSet() {
hashset = new HashSet<Member>();
}
//멤버 한명 추가
public void addMember(Member member) { // 멤버가 매개변수로 넘어온다.
hashset.add(member);
}
public boolean removeMember(int memberID) { // 멤버 아이디를 알아야지 해당하는 값을 삭제할수있다.
// 한명한명 봐야하니 Iterator 를 써야한다.
Iterator ir = hashset.iterator();
if(ir.hasNext()) {
Member member = (Member) ir.next();
if(member.getMemberID() == memberID ) {
hashset.remove(member);
return true;
}
}
System.out.println(memberID + "번호가 존재하지 않습니다.");//재대로 안지워졌으면
return false;
}
// 모든 멤버를 보여주는 메소드
public void showAllMember() {
for(Member member : hashset) {
System.out.println(member); // toString 구현된게 호출
}
System.out.println();
}
}
package set;
public class MemberHashSetTest {
public static void main(String[] args) {
MemberHashSet manager = new MemberHashSet();
// 멤버를 만들고 add 하면 된다.
Member memberLee = new Member(100,"이효리");
Member memberKim = new Member(200,"강감찬");
Member memberPark = new Member(300,"박범");
Member memberPark2 = new Member(300,"박범2");
manager.addMember(memberLee); // 매개변수에 Member member
manager.addMember(memberKim);
manager.addMember(memberPark);
manager.addMember(memberPark2);
// 아이디가똑같이 300이 동시에 2개가 들어가게 되면 ?
// member 가 같다라는것을 정의해줘야 한다. 아이디가 같으면 같은멤버라는것을
// 논리적으로 구현해줘야 한다.
manager.showAllMember();
manager.removeMember(100); // 100번은 지운다.
manager.showAllMember();
}
}
package set;
import java.util.HashSet;
import java.util.Iterator;
public class HashSetTest {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
// set은 get 으로 가져오는게 아니라 Iterator 순회 하면서 hasNext(),next() 가져온다.
set.add("이순신");
set.add("김유신");
set.add("강감찬");
set.add("이순신");
System.out.println(set); // set은 순서대로 나오지 않고 중복되어 나오지 않는다. ex) 주민번호,사번,학번
Iterator<String> ir = set.iterator(); // 순회
while(ir.hasNext()) { // boolean 을 반환을 해주는데 다음 요소가 있는지
String str = ir.next(); // 있으면 가져온다. 현재 반환값이 String이 되니까 String으로 받을수있다.
System.out.println(str);
}
}
}
'JAVA Programming' 카테고리의 다른 글
[70] 컬렉션 프레임워크 요약정리 (0) | 2020.07.20 |
---|---|
[69] Map 에서의 HashMap 과 TreeMap (0) | 2020.07.20 |
[67] TreeSet 자료구조로 구현하기 (오름차순,내림차순,중복X) Comparator상속받을때 (0) | 2020.07.20 |
[66] TreeSet 자료구조로 구현하기 (오름차순,내림차순,중복X) Comparable 상속받을때 (0) | 2020.07.20 |
[65] Set 인터페이스 (Iterator 순회 , 중복x, 순서대로x) (0) | 2020.07.20 |