본문 바로가기
Java Tutorial

[Java] Map컬렉션

by 미소5 2024. 7. 14.

컬렉션(Collections) 프레임워크

  • 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를 삭제하고 값을 리턴
  • Map에는 iterator()가 없다. → keySet(), entrySet(), values() 를 호출해야한다.

 


  • HashMap
    • Map인터페이스의 구현클래스
    • Hashing기법으로(키와 값의 쌍으로) 데이터를 저장     
      • Map<K, V> map = new HashMap<K, V>();
      • 키(K): 컬렉션 내의 키 중 유일해야함 (중복X)
      • 값(V): 데이터의 중복 허용
    • HashMap의 키가 되려면 hashCode()의 리턴값이 같아야함
    • 데이터가 많아도 검색이 빠르다.
    • 순서를 유지하려면, LinkedHashMap클래스를 사용하면 된다.
//Map컬렉션 생성
Map<String, Integer> map = new HashMap<String, Integer>();

//객체 저장
map.put("동장군", 75);
map.put("홍길동", 90);

//객체 찾기
System.out.println(map.get("홍길동"));  //90

//객체를 하나씩 처리
Set<String> keySet=map.keySet();	
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext()){	
	String key=iterator.next();
    Integer value=map.get(key);
    //반복해서 키를 얻고, 값을 Map에서 얻어냄
}

//객체 삭제
map.remove("홍길동");	

//객체를 하나씩 처리
Set<Map.Entry<String, Integer>> entrySet=map.entrySet();	
Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.entryIterator();
while(entryIterator.hasNext()){	
	Map.Entry<String, Integer> entry=entryIterator.next();
	String key=entry.getKey();
    Integer value=entry.getValue();
    //반복해서 Map.Entry를 얻고, 키와 값을 얻어냄
}

//객체 전체 삭제
map.clear();

 


  • 해싱 (Hashing)기법이란?  해시함수로 해시테이블(배열과 LinkedList가 조합된 형태)에 데이터를 저장, 검색
  1.  키로 해시함수를 호출해서 해시코드를 반환한다.
    •  → 해시함수(hash function)   →   해시코드( =index, 배열의 저장위치)
  2.  해시코드에 대응하는 LinkedList를 배열에서 찾는다.
  3.  LinkedList에서 키와 일치하는 데이터를 찾는다.

*해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야한다. 

*서로 다른 키일지라도 같은 값의 해시코드를 반환할 수 있다.

 

 


  • Hashtable
    • 동기화된 메소드로 구성   → HashMap(동기화X)은 Hashtable(동기화O)의 신버전

  • Properties
    • 키와 값을 String타입으로 제한한 컬렉션     <String, String>
    • 파일에 읽기와 쓰기가 용이

 

728x90
반응형

'Java Tutorial' 카테고리의 다른 글

[Java] 스트림 (Stream) +Optional 클래스  (0) 2024.07.02
[Java] 인터페이스 (interface)  (0) 2024.06.16
[Java 필수 지식] 접근제어자  (0) 2024.06.08
[Java] StringBuilder 클래스  (0) 2023.07.24
[Java] 예외 처리  (0) 2023.07.02