본문 바로가기
언어/JAVA

Map 인터페이스

by step 1 2021. 5. 2.
반응형

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

 

반응형

'언어 > JAVA' 카테고리의 다른 글

람다식  (0) 2021.05.08
여러 내부 클래스  (0) 2021.05.08
Comparable, Comparator 인터페이스  (0) 2021.05.02
Set 인터페이스  (0) 2021.05.02
Iterator  (0) 2021.05.02