UroA 개발 블로그

[JAVA] HashMap 사용법 본문

Programming/JAVA

[JAVA] HashMap 사용법

UroA 2015. 12. 29. 14:55

HashMap 사용법


HashMap은 1차원적인 배열을 가지는 List, Set과는 달리 2차원 배열의 형태를 가져 키 값으로 데이터에 접근합니다.


<Map>

key와 value를 쌍으로 저장하는 자료구조로 다른 언어에서는 Dictionary라고 하기도 한다.


<HashMap<String, String> 컬렉션의 내부 구성과 put(), get() 메소드>

  

· key와 value를 하나의 쌍으로 묶어서 저장하는 컬렉션 인터페이스

· key는 중복될 수 없지만 value는 중복 가능

· 동일한 key에 새로운 value를 삽입하면 기존 value는 제거되고 새로운 value 갱신


<HashMap<K,V> 메서드>



· get() : 데이터를 꺼냄, 없으면 null 리턴

· keySet() : 모든 키값을 set으로 리턴

· put() : 데이터를 넣는다.

※ key값은 null인게 한개만 있어야한다.

※ HashTable은 key, value에 null 값이 들어갈 수 없다.


<HashMap 용량>

HashMap() 초기용량을 16으로 하고 적재율은 0.75로 하여 객채생성, 4개중 3개이상 차면 데이터를 다시 배열한다.

※ 초기용량 설정이 가능하다.

 처음에 만들어질 때 기본크기는 16이다. 데이터를 50개 정도 집어 넣으면 적재율이 0.75이고, 12개이상 차면 재 해싱을 하게 된다.

※ 초기용량 설정 중요성 : 재배치의 감소, 속도 증가



<HashMap<String, String> 컬렉션의 생성 및 삽입 삭제>




<HashMap<String, String> 예제>


package class1;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
public class HashMapTest {
 
    public static void main(String[] args) {
 
        Map<String, Object> map = new HashMap<String, Object>(); // 어떠한 자료형이 와도 상관없다
        // 오버라이딩이아닌 이상 Object 타입을 사용하면 강제 형변환해주어야한다
        // Object o = new String(); 이라면 (String)o를 해주어야 한다.
        map.put("baby""아기");
        map.put("love""사랑");
        map.put("apple""사과");

        //map에 존재하는 key값들을 리턴합니다
        System.out.printf("keySet : %s\n", map.keySet());// 키값이 없으면 null을 리턴
        
        //"baby"에 매칭되는 값("아기")를 가져옵니다
        System.out.printf("baby : %s\n", map.get("baby"));
        
        //"존재하지않는 키"와 매칭되는 키가 없으면 null을 리턴합니다
        System.out.printf("존재하지않는 키 : %s\n", map.get("존재하지 않는 키"));
        
        //map의 toString()메서드를 호출합니다, 안에있는 모든데이터를 확인할 수 있습니다
        System.out.printf("저장된 값 : %s\n", map);
 
        // 동일한 키값에 데이터를 삽입하게되면 해당 키값의 이전데이터는 지워지고 그자리에 새로운 데이터가 삽입됨
        map.put("apple""빨간사과");
        System.out.printf("바뀐 apple 값 : %s\n", map.get("apple"));
 
        Set<String> set = map.keySet(); // key의 모든 값을 set으로 리턴하는 메서드
        // keySet()사용하여 Set 에 집어넣어 사용가능
        for (String key : set) {
            System.out.printf("%s ", key);
        }
        System.out.printf("\n");
 
        // 키값에있는 데이터를 제거
        map.remove("apple");
        System.out.printf("%s\n", map);
 
        // map에있는 데이터 모두제거
        map.clear();
        System.out.printf("%s, %s\n", map, map.size());
 
    }
 
}


'Programming > JAVA' 카테고리의 다른 글

[JAVA] 정규표현식이란?  (2) 2016.01.04
[JAVA] JAVA ERROR 모음  (0) 2015.11.24
[JAVA] static 키워드 바로알기  (2) 2015.11.20
Comments