public class Member {
private int memberId;
private String memberName;
@Override
public boolean equals(Object o) {
if(o instanceof Member) {
Member member = (Member)o;
return (this.memberId == member.memberId);
}
return false;
}
@Override
public int hashCode() {
return memberId;
}
~~~
}
public class MemberHashSet {
~~~~
}
public class MemberTest {
public static void main(String[] args) {
MemberHashSet memberHashSet = new MemberHashSet();
Member memberLee = new Member(100, "Lee");
Member memberKim = new Member(200, "Kim");
Member memberJohn = new Member(300, "John");
Member memberpark = new Member(300, "Park");
// member Class에서 hashCode와 equals를 재정의하지 않으면 memberHashSet에 값이 추가된다.
memberHashSet.addMemmber(memberLee);
memberHashSet.addMemmber(memberKim);
memberHashSet.addMemmber(memberJohn);
memberHashSet.addMemmber(memberpark);
memberHashSet.showAllMember();
//Lee회원님의 아이디는 100
//Kim회원님의 아이디는 200
//John회원님의 아이디는 300
}
}
public class Member implements Comparator<Member>{
// 위의 Member와 동일하나 compare()를 선언한다.
public int compare(Member member1, Member member2) { // member1이 this, member2가 parameter
return (member1.memberId - member2.memberId);
}
}
public class Member implements Comparable<Member>{
// 위의 Member와 동일하나 compareTo()를 선언한다.
public int compareTo(Member member) {
// return (this.memberId - member.memberId) * (-1); // memberId가 큰것부터 정렬(내림차순)
// return (this.memberId - member.memberId); // memberId가 작은것부터 정렬(오름차순)
// memberName으로 정렬
return this.memberName.compareTo(member.getMemberName());
}
}
public class MemberTreeSet {
// Comparable를 사용한 경우
public MemberTreeSet() {
treeSet = new TreeSet<Member>();
}
~~~
}
public class MemberTreeSet {
// Comparator를 사용한 경우
public MemberTreeSet() {
// compareTo()가 선언된 생성자를 선언해주어야 한다.
treeSet = new TreeSet<Member>(new Member());
}
~~~
}
public class treeSetTest {
public static void main(String[] args) {
MemberTreeSet memberTreeSet = new MemberTreeSet();
Member memberLee = new Member(100, "Lee");
Member memberKim = new Member(200, "Kim");
Member memberJohn = new Member(300, "John");
Member memberAnn = new Member(400, "Ann");
memberTreeSet.addMember(memberLee);
memberTreeSet.addMember(memberKim);
memberTreeSet.addMember(memberJohn);
memberTreeSet.addMember(memberAnn);
memberTreeSet.showAllMember();
/*
Comparable을 사용한 경우
Ann회원님의 아이디는 400
John회원님의 아이디는 300
Kim회원님의 아이디는 200
Lee회원님의 아이디는 100
*/
/*
Comparator을 사용한 경우
Lee회원님의 아이디는 100
Kim회원님의 아이디는 200
John회원님의 아이디는 300
Ann회원님의 아이디는 400
*/
}
}