반응형
쌍(pair)으로 자료를 관리하는 Map 인터페이스
HashMap 클래스 활용하기
- Map 인터페이스를 구현한 클래스와 가장 많이 사용되는 Map인터페이스 기반 클래스
- Key - Value를 쌍으로 관리하는 메서드를 구현함
- 검색을 위한 자료구조
- Key를 이용하여 값을 저장하고 key를 이용하여 값을 꺼내오는 방식 - hash 알고리즘으로 구현 됨
- Key가 되는 객체는 중복될 수 없고 객체의 유일성을 비교를 위한 equals()와 hashCode() 메서드를 구현해야 함
package ch50;
import java.util.Comparator;
import java.util.TreeSet;
public class Member implements Comparator<Member> {
private int memberId; // 회원 아이디
private String memberName; // 회원 이름
public Member(int memberId, String memberName) { // 생성자
this.memberId = memberId;
this.memberName = memberName;
}
public Member() {
}
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 int hashCode() {
return memberId;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Member) { // Member 클래스 인지 확인
Member member = (Member) obj; // Member 클래스로 다운 캐스팅
if (this.memberId == member.memberId) { // 기존 memberId 와 같은 값이 있는지 확인
return true;
} else {
return false;
}
}
return false;
}
@Override
public String toString() { // toString 메소드 오버로딩
return memberName + " 회원님의 아이디는 " + memberId + "입니다";
}
// 비교 후 오름차순 정렬
// @Override
// public int compareTo(Member member) {
//
//// if (this.memberId > member.memberId) {
//// return 1;
//// } else if (this.memberId < member.memberId) {
//// return -1;
//// } else {
//// return 0;
//// }
//
// return (this.memberId - member.memberId);
// }
@Override
public int compare(Member member1, Member member2) {
// TODO Auto-generated method stub
return (member1.memberId - member2.memberId);
}
}
package ch50;
import java.util.HashMap;
import java.util.Iterator;
public class MemberHashMap {
private HashMap<Integer, Member> hashMap;
public MemberHashMap() {
hashMap = new HashMap<>();
}
public void addMember(Member member) {
hashMap.put(member.getMemberId(), member);
}
public boolean removeMember(int memberId) {
if (hashMap.containsKey(memberId)) { // 해당 memberId 값이 있으면 삭제
hashMap.remove(memberId);
return true;
} else {
System.out.println("no element");
return false;
}
}
public void showAllMember() {
Iterator<Integer> ir = hashMap.keySet().iterator();
while (ir.hasNext()) {
int key = ir.next();
Member member = hashMap.get(key);
System.out.println(member);
}
}
}
package ch50;
import java.util.Comparator;
import java.util.HashMap;
import java.util.TreeSet;
public class MemberHashMapTest {
public static void main(String[] args) {
MemberHashMap memberHashMap = new MemberHashMap();
Member memberHong = new Member(1004, "홍길동");
Member memberLee = new Member(1001, "이순신");
Member memberKim = new Member(1002, "김유신");
Member memberKang = new Member(1003, "강감찬");
memberHashMap.addMember(memberHong);
memberHashMap.addMember(memberLee);
memberHashMap.addMember(memberKim);
memberHashMap.addMember(memberKang);
memberHashMap.showAllMember();
System.out.println();
memberHashMap.removeMember(memberKang.getMemberId());
memberHashMap.showAllMember();
System.out.println();
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1001, "Kim");
hashMap.put(1002, "Lee");
hashMap.put(1003, "Park");
hashMap.put(1004, "Hong");
System.out.println(hashMap);
}
}
TreeMap 클래스
- Map 인터페이스를 구현한 클래스이고 key에 대한 정렬을 구현할 수 있음
- key가 되는 클래스에 Comparable이나 Comparartor인터페이스를 구현함으로써 key - value 쌍의 자료를 key값 기준으로 정렬하여 관리할 수 있음
반응형