이 포스트는 FastCampus에 이 강의를 보고 포스팅되었습니다.
문제가 될 시 삭제될 예정입니다.
Map은 Key-Value 구조로 되어있는 자료구조입니다.
키와 값이 하나의 쌍으로 연결되어 있어 키를 통해 값에 접근을 할 수 있습니다.
대표적인 클래스는 HashMap이 있습니다.
Map 인터페이스를 구현한 클래스입니다.
현재 가장 많이 사용되는 클래스이기도 하죠.
Key-Value를 쌍으로 관리하는 메서드가 존재합니다.
Key를 이용하여 값을 지정, 꺼내오기가 가능합니다.
Key가 되는 객체는 중복될 수 없고, 객체가 중복되는지 확인하기 위한 equals()와 hashCode() 메서드를 구현해야 합니다.
이 놈으로 멤버십 프로그램을 리팩토링 해보겠습니다.
코드는 제 깃허브에 올라와 있습니다.
오는 김에 팔로우랑 스타도 눌러줘잉
public class MemberHashMap {
private HashMap<Integer, Member> hashMap; // HashMap 클래스 import
public MemberHashMap() {
hashMap = new HashMap<>(); // 빈 hashMap 생성
}
}
public void addMember(Member member) {
hashMap.put(member.getMemberId(), member);
} // memberId : Member 이렇게 저장할 예정
public boolean removeMember(int memberId) {
if (hashMap.containsKey(memberId)) { // 만약 그 키에 해당하는 유저가 있다면
hashMap.remove(memberId); // 해당 유저를 지우고
return true; // 완료됬다는 의미에 True를 반환함.
}
System.out.println("그 아이디에 해당하는 사람이 없습니다."); // 만약 없다면
return false; // false를 반환함
}
public void showAllMember() {
Iterator<Integer> ir = hashMap.keySet().iterator(); // iterator 생성
while(ir.hasNext()) { // 다음 id가 없을떄까지
int key = ir.next(); // key를 다음 요소의 id로 설정하고
Member member = hashMap.get(key); // 그 key로 Member를 가져온다.
System.out.println(member); // 출력
}
}
public class MemberHashMapTest {
public static void main(String[] args) {
Member member1 = new Member();
Member member2 = new Member();
Member member3 = new Member();
Member member4 = new Member();
member1.setMemberId(1);
member1.setMemberName("아스나");
member2.setMemberId(2);
member2.setMemberName("키리토");
member3.setMemberId(3);
member3.setMemberName("홍인성");
member4.setMemberId(4);
member4.setMemberName("유지오");
MemberHashMap hashList = new MemberHashMap();
hashList.addMember(member1);
hashList.addMember(member2);
hashList.addMember(member3);
hashList.addMember(member4);
hashList.showAllMember();
}
}
테스트코드를 돌려보면 다음과 같이 결과가 나옵니다.
Member{memberId=1, memberName='아스나'}
Member{memberId=2, memberName='키리토'}
Member{memberId=3, memberName='홍인성'}
Member{memberId=4, memberName='유지오'}
HashMap에는 저렇게 귀찮게 while문을 쓰지 않더라도 바로 print를 시킬 수 있습니다.
어떻게 하는건지 알아보겠습니다.
public void showAllMember() {
System.out.println(hashMap);
}
이러고 다시 테스트 코드를 돌려보겠습니다.
{
1=Member{memberId=1, memberName='아스나'},
2=Member{memberId=2, memberName='키리토'},
3=Member{memberId=3, memberName='홍인성'},
4=Member{memberId=4, memberName='유지오'}
}
이런식으로 key와 value가 출력이 되는것을 보실 수 있습니다.
여기서 다뤄보지는 않았지만 key를 기준으로 정렬을 하는 TreeMap도 있습니다.
여기까지 컬렉션 프레임워크를 다뤄보았습니다.
사실 이 외에도 많은 클래스가 있지만 다 외울 필요는 없고 이런 대표적인 것들만 외우셔도 충분하실 것 같습니다.
그럼 20000!