파니동 2019. 12. 20. 22:12

hashMap

hashMap은 해쉬알고리즘으로 구현한 인터페이스다.
key, value 로 쌍을 이루고 있으며, key값은 중복이 되면 안된다.

실무에서 가장 많이 사용하는 자료구조 중에 하나이다.


MemberHashMap

package collection.map.hashmap;

import java.util.HashMap;
import java.util.Iterator;

import collection.Member;

public class MemberHashMap {
    private HashMap<Integer, Member> hashMap;

    public MemberHashMap() {
        hashMap = new HashMap<Integer, Member>();
    }

    public void addMember(Member member) {
        hashMap.put(member.getMemberId(), member);
    }

    public boolean removeMember(int memberId) {
        if(hashMap.containsKey(memberId)) {
            hashMap.remove(memberId);
            return true;
        }

        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);
        }
        System.out.println();
    }                
}

MemberHashMapTest

package collection.map.hashmap;

import collection.Member;

public class MemberHashMapTest {

    public static void main(String[] args) {
        MemberHashMap memberHashMap = new MemberHashMap();

        Member memberLee = new Member(1001, "이지원");
        Member memberSon = new Member(1002, "손민국");
        Member memberPark = new Member(1003, "박서훤");
        Member memberHong = new Member(1004, "홍길동");

        memberHashMap.addMember(memberLee);
        memberHashMap.addMember(memberSon);
        memberHashMap.addMember(memberPark);
        memberHashMap.addMember(memberHong);

        memberHashMap.showAllMember();

        memberHashMap.removeMember(1004);
        memberHashMap.showAllMember();                
    }

}


TreeMap

TreeMap은 저장된 키값을 기준으로 정렬을 해준다.


MemberTreeMap

package collection.map.treemap;

import java.util.Iterator;
import java.util.TreeMap;

import collection.Member;

public class MemberTreeMap {
    private TreeMap<Integer, Member> treeMap;

    public MemberTreeMap() {
        treeMap = new TreeMap<Integer, Member>();
    }

    public void addMember(Member member) {
        treeMap.put(member.getMemberId(), member);
    }

    public boolean removeMember(int memberId) {
        if(treeMap.containsKey(memberId)) {
            treeMap.remove(memberId);
            return true;
        }

        System.out.println(memberId + " 가 존재하지 않습니다. ");
        return false;
    }

    public void showAllMember() {
        Iterator<Integer> ir = treeMap.keySet().iterator();
        while(ir.hasNext()) {
            int key = ir.next();
            Member member = treeMap.get(key);
            System.out.println(member);
        }
        System.out.println();
    }
}
  • 전과 동일

MemberTreeMapTest

package collection.map.treemap;

import collection.Member;

public class MemberTreeMapTest {

    public static void main(String[] args) {
        MemberTreeMap memberTreeMap = new MemberTreeMap();

        Member memberLee = new Member(1003, "이지원");
        Member memberSon = new Member(1004, "손민국");
        Member memberPark = new Member(1005, "박서훤");
        Member memberHong = new Member(1002, "홍길동");

        memberTreeMap.addMember(memberLee);
        memberTreeMap.addMember(memberSon);
        memberTreeMap.addMember(memberPark);
        memberTreeMap.addMember(memberHong);

        memberTreeMap.showAllMember();

        memberTreeMap.removeMember(1004);
        memberTreeMap.showAllMember();                
    }

}
  • 키 값 Integer클래스는 내부적으로 Comparable 클래스를 재정의 하였기에 가능한 것이다.

출처: do it 자바프로그래밍