48.쌍(pair)으로 자료를 관리하는 Map 인터페이스
HashMap 클래스 활용
- Map 인터페이스를 구현한 클래스
- 가장 많이 사용되는 Map 인터페이스 기반 클래스
- key - value를 쌍으로 관리하는 메서드를 구현
- 검색을 위한 자료구조
- key를 이요하여 값을 저장하고 key를 이용하여 값을 꺼내오는 방식 - hash 알고리즘으로 구현됨
- key가 되는 객체는 중복될 수 없고 객체의 유일성을 비교하기 위한 equals()와 hashCode() 메서드를 구현해야함
예제
- Member.java
public class Member implements Comparator<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;
}
@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;
}
@Override
public int compare(Member member1, Member member2) {
return (member1.memberId - member2.memberId);
}
}
- MemberHashMap.java
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)) {
hashMap.remove(memberId);
}
System.out.println(memberId+"가 없습니다.");
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);
}
}
}
- MemberHashMapTest.java
public class MemberHashMapTest {
public static void main(String[] args) {
MemberHashMap memberHashMap = new MemberHashMap();
Member memberLee = new Member(1000,"Lee");
Member memberKim = new Member(1001,"Kim");
Member memberKang = new Member(1002,"Kang");
Member memberKong = new Member(1003,"Kong");
memberHashMap.addMember(memberLee);
memberHashMap.addMember(memberKim);
memberHashMap.addMember(memberKang);
memberHashMap.addMember(memberKong);
memberHashMap.showAllMember();
HashMap<Integer,String> hashMap = new HashMap<Integer,String>();
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이나 Comparator인터페이스를 구현함으로써 key-value 쌍의 자료를 key값 기준으로 정렬하여 관리할 수 있음