2019년 11월 9일 토요일

Java HashMap 활용법.

오늘 포스팅 할 내용은 Java 에서 주로 쓰이는 HashMap 활용법에 대한 강좌 입니다.

HashMap key/value 성 데이터를 관리의 목적으로 만들어진 Template Class 중 하나 입니다.

HashMap<class Key, class Value> variable; 과 같이 선언 하여 씁니다.

간단히 문자열 "A" ~ "Z" 까지 실제 ASCII 코드값을 매칭 하는 샘플을 만들어 보겠습니다.


package process;

import java.util.HashMap;
import java.util.Iterator;

public class HashMapSample
{
 public static void main(String[] args) throws Exception
 {
  HashMap<String, Integer> mapAlphaASCII = new HashMap<String, Integer>();

  //값 할당.
  for (int i = 65; i <= 90; i++)
  {
   String sKey;
   sKey = String.format("%c", i);
   
   mapAlphaASCII.put(sKey, Integer.valueOf(i));
  }

  // entrySet을 이용한 접근방법. 
  System.out.println("entrySet 이용한 접근...");
  for( HashMap.Entry<String, Integer> item : mapAlphaASCII.entrySet() )
  { 
   System.out.println(String.format("Key[%s]=Value[%d]", item.getKey(), item.getValue())); 
  } 

  // keySet을 이용한 접근방법.
  System.out.println("keySet을 이용한 접근...");
  for( String key : mapAlphaASCII.keySet() )
  { 
   System.out.println(String.format("Key[%s]=Value[%d]", key, mapAlphaASCII.get(key))); 
  } 

  // Iterator를 이용한 접근방법. 
  System.out.println("Iterator를 이용한 접근...");
  Iterator<String> keys = mapAlphaASCII.keySet().iterator(); 
  while( keys.hasNext() )
  { 
   String key = keys.next(); 
   System.out.println(String.format("Key[%s]=Value[%d]", key, mapAlphaASCII.get(key))); 
  }
 }
}
< 위 코드는 우분투 환경에서 javac 1.8.0_232-ea 에서 빌드 되었습니다 >

코드는 중복값 체크 없이 무조건 삽입 하는 코드 입니다.

멤버를 접근 하는 방법은 entrySet / keySet / Iterator 를 이용하는 방법으로 구현 하였습니다.

코드의 간결성을 위해 보통은 두번째 keySet을 저는 보통 사용합니다.

Key와 Value는 Object 를 상속 받은 객체형 타입이어야 합니다.

HashMap 관련 상세한 인터페이스는 https://cr.openjdk.java.net/~iris/se/11/latestSpec/api/java.base/java/util/HashMap.html 여기서 확인 하실수 있습니다.

​제가 여기서 추가로 설명하고자 하는것은 제가 자주 사용하던 패턴과 사용함에 있어 필요로 생각하는 요소들만 정리해서 안내 해드리겠습니다.

a. put : HashMap 에 멤버를 추가 해주는 메소드 입니다.
b. size : HashMap 에 저장된 멤버에 대한 갯수를 리턴해주는 메소드 입니다.
c. clear : HashMap 에 저장된 멤버를 모두 지우는 메소드 입니다.
d. remove : HashMap 에 저장된 멤버중 하나를 지우는 메소드 입니다.
e. keySet : HashMap 의 키셋을 반환 합니다.
f. get : 특정 키에 해당하는 값을 리턴합니다.

위 설명된 항목들을 활용한 샘플 코드를 만들어 보겠습니다.


package process;

import java.util.HashMap;
import java.util.Iterator;

public class HashMapSample2
{
 public static void main(String[] args) throws Exception
 {
  HashMap<String, Integer> mapAlphaASCII = new HashMap<String, Integer>();

  //값 할당.
  for (int i = 65; i <= 90; i++)
  {
   String sKey;
   sKey = String.format("%c", i);
   
   mapAlphaASCII.put(sKey, Integer.valueOf(i));
  }

  System.out.println(String.format("mapAlphaASCII Member Count %d", mapAlphaASCII.size()));

  // keySet을 이용한 멤버 출력..
  for( String key : mapAlphaASCII.keySet() )
  { 
   System.out.println(String.format("Key[%s]=Value[%d]", key, mapAlphaASCII.get(key))); 
  } 

  // B 값을 찾아 삭제.
  if (mapAlphaASCII.get("B") != null)
  {
   mapAlphaASCII.remove("B"); 
  }
  else
   System.out.println(String.format("Not Found B"));

  System.out.println(String.format("mapAlphaASCII Member Count %d", mapAlphaASCII.size()));

  //전체 멤버 삭제.
  mapAlphaASCII.clear();

  System.out.println(String.format("mapAlphaASCII Member Count %d", mapAlphaASCII.size()));  
 }
}

HashMap 의 기능은 제가 링크를 걸은 곳에서 더 많은 기능을 확인 하실수 있습니다.

댓글 없음: