kye-value pair의 객체를 관리하는데 필요한 메서드가 정의 됨
key는 중복 될 수 없음
검색을 위한 자료 구조
key를 이용하여 값을 저장하거나 검색, 삭제 할때 사용하면 편리함
index = hash(key)
key가 되는 객체는 객체의 유일성함의 여부를 알기 위해 equals()와 hashCode()메서드를 재정의 함
HashMap 클래스를 가장 많이 사용한다
Map 인터페이스를 구현한 클래스 중 가장 일반적으로 사용한는 클래스
HashTable 클래스는 자바2 부터 제공된 클래스로 Vector 처럼 동기화를 제공 한다
pair자료를 쉽고 빠르게 관리할 수 있다
public class 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;
}
public String toString(){
return memberName + "회원님의 아이디는 " + memberId + "입니다.";
}
}
import java.util.HashMap;
import java.util.Iterator;
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); // key 값으로 지울수 있음
return true;
}
System.out.println("회원 번호가 없습니다");
return false;
}
public void showAllMember(){
Iterator<Integer> ir = hashMap.keySet().iterator(); //모든 key를 set으로 반환해줌
// hashMap.values().iterator(); // 모든 val을 colletion으로 반환해줌
while(ir.hasNext()){
int key = ir.next();
Member member = hashMap.get(key);
System.out.println(member);
}
System.out.println("");
}
}
public class MemberHashMapTest {
public static void main(String[] args) {
MemberHashMap manager = new MemberHashMap();
Member memberLee = new Member(200, "Lee");
Member memberKim = new Member(300, "Kim");
Member memberPark = new Member(100, "Park");
Member memberPark2 = new Member(100, "Park");
manager.addMember(memberLee);
manager.addMember(memberKim);
manager.addMember(memberPark);
manager.addMember(memberPark2);// 키값이 Integer로 되어있기 때문에 중복값무시
manager.showAllMember();
//Park회원님의 아이디는 100입니다.
//Lee회원님의 아이디는 200입니다.
//Kim회원님의 아이디는 300입니다.
manager.removeMember(200);
manager.showAllMember();
//Park회원님의 아이디는 100입니다.
//Kim회원님의 아이디는 300입니다.
}
}
다른 내용은 Hashmap 예제와 동일 하기 때문에 Test클래스만 가져 왔다.
package Colletion.treemap;
public class MemberTreeMapTest {
public static void main(String[] args) {
MemberTreeMap manager = new MemberTreeMap();
Member memberLee = new Member(100, "Lee");
Member memberKim = new Member(200, "Kim");
Member memberPark = new Member(300, "Park");
Member memberPark2 = new Member(300, "Park");
manager.addMember(memberLee);
manager.addMember(memberKim);
manager.addMember(memberPark);
manager.addMember(memberPark2);
manager.showAllMember();
//Lee회원님의 아이디는 100입니다.
//Kim회원님의 아이디는 200입니다.
//Park회원님의 아이디는 300입니다.
manager.removeMember(200);
manager.showAllMember();
//Lee회원님의 아이디는 100입니다.
//Park회원님의 아이디는 300입니다.
}
}