본문 바로가기
개발/JAVA

Java HashMap 사용법

by 외노자개발 2022. 12. 5.
반응형

 

 

HashMap 사용법


 

HashMap 클래스는 Map 인터페이스를 구현한 클래스의 하나로, 키와 값의 페어를 맵에 추가합니다. 맵에 키를 지정하면 해당 값을 얻을 수 있습니다.

※ HashMap 클래스는 java.util 패키지에 포함되어 있습니다. 이용하는 경우는 java.util.LinkedList 를 임포트 해 주세요.

 

 

HashMap 클래스의 인스턴스 만들기


먼저 HashMap 클래스의 인스턴스를 만드는 방법입니다. new 연산자를 사용해 다음과 같이 작성합니다.

HashMap <키 데이터 타입, 값 데이터 타입> 변수 이름 = new HashMap <>();

HashMap 클래스는 요소에 키와 값을 페어로 포함합니다. 따라서 키의 데이터 형식과 값의 데이터 형식을 각각 지정합니다. 예를 들면 키에 캐릭터 값, 값에 정수를 포함하는 경우는 다음과 같이 기술합니다.

HashMap<String,Integer> map = new HashMap<>();

또한 HashMap 은 Map 인터페이스를 구현한 클래스이므로, 다음과 같이 Map 객체로서 작성할 수도 있습니다. Map 객체로서 작성했을 경우는, HashMap 클래스로만 정의되고 있는 메소드는 이용할 수 없게 됩니다만, 같은 Map 인터페이스를 구현한 클래스에 변환하는 경우 등에 편리합니다.

Map<String,Integer> map = new HashMap<>();

주로 사용하는 메소드는 Map 인터페이스로 정의되고 있으므로, 통상은 Map 객체로서 작성하는 것이 많은 것 같습니다. (덧붙여 List 객체로서 작성하는 경우는 java.util.Map 를 임포트 해 주세요).

 

또한 데이터형에는 기본 데이터형인 int 나 double 등은 지정할 수 없습니다. 이러한 수치를 포함하고 싶은 경우에는, 각각의 기본 데이터형에 대응한 래퍼 클래스를 사용해 주세요.

 

래퍼 클래스에 대한 자세한 내용은 하기 url 을 클릭해주세

 

java 래퍼 클래스 사용 wrapper class

래퍼 클래스 사용 기본 데이터형인 int 와 double 의 값을 오브젝트로서 취급할 수 있도록 준비되어 있는 것이 래퍼 클래스입니다. 기본 데이터형마다 각각 래퍼 클래스가 준비되어 있어 기본 데이

seodev.tistory.com

 

 

키-값 페어를 맵에 추가(put)


맵에 새로운 키와 값의 페어를 추가하려면 HashMap 클래스로 준비되어 있는 put 메소드를 사용합니다. 

public V put(K key, V value)

파라미터:
key - 지정된 값이 관련지을 수 있는 키
value - 지정된 키에 관련지을 수 있는 값

반환값:
key에 이전에 관련지을 수 있었던 값. key 의 매핑이 존재하지 않았던 경우는 null 

정의:
인터페이스: Map<K,?V>

 

 

인수에 지정된 키-값을 맵에 추가합니다.

Map<String,Integer> map = new HashMap<>(); 

map.put("사과",80); 
map.put("오렌지",120); 
map.put("포도",90);

세 개의 키-값이 맵에 추가되었습니다.

 

 

또한 Integer 클래스 등 기본 데이터형의 래퍼 클래스의 객체를 포함하는 리스트의 경우, 요소를 추가할 때에 put 메소드의 인수에 Integer 클래스의 인스턴스를 지정합니다.

Map<String,Integer> map = new HashMap<>(); 

map.put("사과",Integer.valueOf(80));

 

 

지정된 키와 페어의 값을 취득한다 (get)


맵에 추가되고 있는 키와 값의 페어중에서, 지정한 키와 페어의 값을 취득하는 HashMap 클래스로 준비되어 있는 get 메소드를 사용합니다. 

public V get (Object key)

파라미터:
key - 관련지을 수 있었던 값이 돌려주어지는 키

반환값:
지정된 키가 맵 되고 있는 값. 그 키의 매핑이 이 맵에 포함되어 있지 않은 경우는 null

정의:
인터페이스: Map<K,?V>

 

 

인수에 지정한 키와 페어의 값을 반환값으로서 취득합니다. 맵안에 지정한 키가 존재하지 않는 경우는 null 가 돌려주어집니다.

Map<String,Integer> map = new HashMap<>(); 

map.put("사과",80); 
map.put("오렌지",120); 
map.put("포도",90); 

System. out.println(map.get("오렌지")); // 120 
System.out.println(map.get("멜론")); // null

키 "오렌지"는 맵에 존재하므로 쌍의 값인 120이 반환 값으로 반환됩니다. 

그에 대해 키 "멜론" 은 맵에 존재하지 않기 때문에 null 가 돌려주어집니다.

 

또한 맵에는 값으로서 null 를 가지는 페어를 등록할 수도 있습니다. 

그 때문에, null 가 반환값으로서 돌려주어졌을 경우에서도 맵에 키가 존재하지 않는지,

아니면 지정한 키에 대응하는 값이 null 인지는 모릅니다.

 

 

 

맵에서 키-값 쌍 삭제(remove,clear)


맵에 추가되고 있는 키와 값의 페어를 삭제하려면 HashMap 클래스로 준비되어 있는 remove 메소드를 사용합니다. 

 

public V remove (Object key)

파라미터:
key - 매핑이 맵으로부터 삭제되는 키

반환값:
key에 이전에 관련지을 수 있었던 값. key 의 매핑이 존재하지 않았던 경우는 null (반환값 null은, 맵이 이전에 null와 key를 관련짓고 있었던 것을 나타내는 경우도 있다)

정의:
인터페이스: Map<K,?V>

 

 

또 맵에 추가되고 있는 모든 키와 값의 페어를 삭제하려면 HashMap 클래스로 준비되어 있는 clear 메소드를 사용합니다. 

public void clear()

이 메소드를 호출하면, 맵에 추가되어 있는 키와 값의 페어를 모두 삭제합니다.

 

 

 

맵에 지정된 키 또는 값이 있는지 확인합니다 (containsKey, containsValue)


맵에 지정한 키가 존재하고 있을지 어떨지를 확인하려면 HashMap 클래스로 준비되어 있는 containsKey 메소드를 사용합니다.

public boolean containsKey (Object key)

파라미터:
key - 이 맵 내에 있는지 어떨지를 판정되는 키

반환값:
이 맵이 지정된 키의 매핑을 보관 유지하는 경우는 true

정의:
인터페이스: Map<K,?V>

 

인수에 지정한 키가 맵에 존재하고 있을 경우 true 를 돌려줍니다. 존재하지 않았던 경우는 false 를 돌려줍니다.

 

 

마찬가지로 맵에 지정된 값이 존재하는지 확인하려면 HashMap 클래스에서 제공하는 containsValue 메서드를 사용합니다. 

 

public boolean containsValue (Object value)

파라미터:
value - 이 맵에 있는지 어떨지를 판정되는 값

반환값:
이 맵이 1 개 또는 복수의 키를 지정된 값에 매핑 하고 있는 경우는 true

정의:
인터페이스: Map<K,?V >

 

 

인수에 지정한 값이 맵에 존재하고 있었을 경우 true 를 돌려줍니다. 존재하지 않았던 경우는 false 를 돌려줍니다. 

또한 맵에서 키는 중복할 수 없습니다만, 값은 같은 값이 복수 존재하는 일도 있습니다.

 

Map<String,Integer> map = new HashMap<>(); 

map.put("사과",80); 
map.put("오렌지",120); 
map.put("포도",90); 

System. out.println(map.containsKey("포도")); // true 
System.out.println(map.containsValue(100)); // false
반응형

댓글