프로그래밍 언어/JAVA(자바) 응용

48.쌍(pair)으로 자료를 관리하는 Map 인터페이스

lroot 2022. 5. 31. 16:06
728x90
반응형

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값 기준으로 정렬하여 관리할 수 있음