본문 바로가기
  • Coding & Book
학습단/JAVA 학습단

19. 혼공자 19일차(컬렉션 프레임 워크_3)

by 루이3 2023. 8. 9.

Map 컬렉션

  • Map 컬렉션은 키와 값으로 구성된 Map.Entry 객체를 저장하는 구조를 가지고 있습니다.
  • 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있습니다.
  • 기존에 저장된 키와 동일한 키를 저장할경우 기존의 값의 없어지고 새로운 값으로 대체됩니다.
  • Map컬렉션에는 HashMap, HashTable, LinkedHashMap, Properties, TreeMap 등이 있습니다.

 

 

Map 컬렉션에서 공통적으로 사용가능한  Map 인터페이스 메소드

  • 키로 객체들을 관리하기 때문에 키를 매개값으로 갖는 메소드가 많습니다.
기능 메소드 설명
객체 추가 V put(K key, V value) 주어진 키값으로 저장
새로운 키일경우 null 리턴
동일한 키일 경우 값을 대체 하고
이전값을 리턴
객체 검색 boolean containsKey(Object key) 주어진 키가 있는지 여부 확인
boolean containsValue(Object value) 주어진 값이 있는지 여부 확인
Set<Map.Entry<K,V>> entrySet() 키와 값의 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아서 리턴
V get(Object key) 주어진 키가 있는 값을 리턴
boolean isEmpty() 컬렉션이 비어 있는지 여부를 확인
Set<K> keySet() 모든 키를 Set 객체에 담아서 리턴
int size() 저장된 키의 총 수를 리턴
Collection<V> values() 저장된 모든 값을 Collection 에 담아서 리턴
객체 삭제 void clear() 모든 Map.Entry를 삭제
V remove(Object key) 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴

 

HashMap

  • HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다.
  • HashMap의 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의 하여 동등 객체가 될 조건을 정해야 합니다.
Map<K, V> map = new HashMap<K, V>();

//예시
Map<String, Interger> map = new HashMap<String, Integer>();

 

예시)

package sec16.exam01;

import java.util.*;

public class HashMapExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map<String, Integer> map = new HashMap<String, Integer>();

		map.put("Java", 95);
		map.put("C", 85);
		
		Set<String> keySet = map.keySet();
		Iterator<String> keyIterator = keySet.iterator();
		while(keyIterator.hasNext()) {
		  String key = keyIterator.next();
		  Integer value = map.get(key);
		  System.out.println(key + " : " + value);
		}		
		System.out.println();	
	}

}

 

HashTable

  • HashTable은 HashMap과 동일한 내부 구조를 가지고 있습니다.
  • 차이점으로는 HashTable은 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에
    HashTable의 메소드들을 실행할 수 없고 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행 할수 있습니다.
Map<K, V> map = new HashTable<K, V>();

 

 

예시) 키보드로 아이디와 비밀번호를 입력받아서 저장되어 있는 키와 값을 비교한 후 로그인 여부를 출력하는 예시

package sec16.exam01;
import java.util.*;


public class HashtableExample {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map<String, String> map = new Hashtable<>();

		map.put("Java", "1111");
		map.put("C", "2222");
		
		Scanner scanner = new Scanner(System.in);
		
		while(true) {
			System.out.println("아이디,비번 입력");
			System.out.print("id: ");
			String id = scanner.nextLine();
			
			System.out.print("pw: ");
			String password = scanner.nextLine();
			System.out.println();
			
			if(map.containsKey(id)) {
				if(map.get(id).equals(password)) {
					System.out.println("login");
					break;
				} else {
					System.out.println("no pw");
				}				
			} else {
				System.out.println("no id");
			}
		}
	}
}