컬렉션 프레임 워크
Map 인터페이스
- 쌍으로 이루어진 자료구조 (key , value)
- 키는 유일한 값이어야한다.
- ex) 파이썬의 경우에는 딕셔너리
- key-value pair의 객체를 관리하는데 필요한 메서드가 정의됨
- key는 중복 될 수 없음
- 검색을 위한 자료구조
- key를 이용하여 값을 저장하거나 검색,삭제 할때 사용하면 편리함
내부적으로 hash방식으로 구현됨
- Map에 값을 전체 출력하기 위해서는 entrySet(), keySet() 메소드를 사용
entrySet() 메서드는 key와 value의 값이 모두 필요한 경우 사용하고 keySet()메서드는 key의 값만 필요한 경우 사용한다.
index = hash(key)// index는 저장위치 |
- key가 되는 객체는 객체의 유일성함의 여부를 알기위해 equals()와 hashCode()메소드를 재정의함
HashMap 클래스
- Map 인터페이스를 구현한 클래스 중 가장 일반적으로 사용하는 클래스
- HashTable 클래스는 자바2 부터 제공된 클래스로 Vector처럼 동기화를 제공함
- pari 자료를 쉽고 빠르게 관리할 수 있음
TreeMap 클래스
- key 객체를 정렬하여 key-value를 pair로 관리하는 클래스
- key에 사용되는 클래스에 Comparable,Comparator 인터페이스를 구현 해서 사용
- java에 많은 클래스들은 이미 Comparable이 구현되어 있음
- 구현된 클래스를 key로 사용하는 경우는 구현할 필요없음.
public final class Integer extends Number implements Comparable<integer>{ .... public int compareTo(Integer anotherInteger){ return compare(this.value,another.value); } } |
HashMap Code
Member class
package hashmap;
public class Member {
private int memberId;
private String memeberName;
public Member() {}
public Member(int memberId,String memberName) {
this.memberId=memberId;
this.memeberName=memberName;
}
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public String getMemeberName() {
return memeberName;
}
public void setMemeberName(String memeberName) {
this.memeberName = memeberName;
}
public String toString() {
return memeberName +"회원님의 아이디는 "+memberId+"입니다.";
}
}
MemberHashMap class
package hashmap;
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);
return true;
}
System.out.println("회원번호가 없습니다.");
return false;
}
public void showAllMember() {
//keySet 모든 것을 반환해준다. 셋타임으로 반환 이터레이터가 키로 순환
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();
}
}
HashMapTest Class
package hashmap;
public class MemberHashMapTest {
public static void main(String[] args) {
MemberHashMap manager = new MemberHashMap();
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();
//
// //제거
// manager.removeMember(100);
//제거후
manager.showAllMember();
manager.removeMember(200);
manager.showAllMember();
}
}
TreeMap Code
member class
package treemap;
public class Member {
private int memberId;
private String memeberName;
public Member() {}
public Member(int memberId,String memberName) {
this.memberId=memberId;
this.memeberName=memberName;
}
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public String getMemeberName() {
return memeberName;
}
public void setMemeberName(String memeberName) {
this.memeberName = memeberName;
}
public String toString() {
return memeberName +"회원님의 아이디는 "+memberId+"입니다.";
}
}
MemberTreeMap class
package treemap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.TreeMap;
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("회원번호가 없습니다.");
return false;
}
public void showAllMember() {
//keySet 모든 것을 반환해준다. 셋타임으로 반환 이터레이터가 키로 순환
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 class
package treemap;
public class MemberTreeMapTest {
public static void main(String[] args) {
MemberTreeMap manager = new MemberTreeMap();
Member memberPark = new Member(300,"Park");
Member memberLee = new Member(100,"LEE");
Member memberKim = new Member(200,"Kim");
Member memberPark2 = new Member(400,"Park");
//전체
manager.addMember(memberLee);
manager.addMember(memberKim);
manager.addMember(memberPark);
manager.addMember(memberPark2);
// //전체추가후
// manager.showAllMember();
//
// //제거
// manager.removeMember(100);
//제거후
manager.showAllMember();
manager.removeMember(200);
manager.showAllMember();
}
}
'JAVA' 카테고리의 다른 글
람다식 (0) | 2019.10.14 |
---|---|
내부클래스 (0) | 2019.10.13 |
Comparable 인터페이스와 Comparator 인터페이스 (0) | 2019.10.11 |
set 인터페이스 (0) | 2019.10.10 |
Stack과 Queue (0) | 2019.10.09 |