JAVA

Map인터페이스

Stater 2019. 10. 12. 09:00

Map구조
Collection 구조

 

컬렉션 프레임 워크

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