정리하고기록하자

HashMap 본문

Data Structure

HashMap

정리하고기록하자 2022. 5. 21. 16:10
반응형

HashMap 

1. HashMap 은 Map 인터페이스에 속해 있는 컬렉션이다.

2. Map 인터페이스의 기본 기능등을 전부 구현할 수 있다.

3. 데이터들은 모두 ( 키, 값 )의 1:1 구조로 되어 있는 Entry로 되어있다.

4. 같은 키의 값을 삽입하려고하면 해당 키의 값이 변경이 된다.

5. 키는 중복이 되지 않지만 값은 중복이 될 수 있다.

6. 다른 특징은 HashTable과 유사하지만 동기화가 되지 않고 Null값도 저장이 가능하다.


HashMap 선언

import java.util.HashMap;

public class main {

	public static void main(String[] args) {
		HashMap hashMap = new HashMap(); // 타입 설정 x , Object 입력
		HashMap<Integer, Integer> hashMapInteger = new HashMap<>(); // Integer, Integer 타입 설정
		HashMap<Integer, Integer> hashMapInteger1 = new HashMap<>(hashMapInteger); // hashMapInteger의 값을 hashMapInteger2에 카피
		/*ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ*/
		HashMap<Integer, Integer> hashMapInteger2 = new HashMap<>(10); // 초기 용량 지정
		/*ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ*/
		HashMap<String, String> hashMapString = new HashMap<>();
		HashMap<Character, Character> hashMapCharcter = new HashMap<>();
		/*ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ*/
		
	}

}

HashMap을 선언하는 방법은 Key, Value 2개의 값을 가지고 있으므로

타입을 선언하려는 두 개의 타입으 선언해야한다

HashMap<타입, 타입> 변수명 = new HashMap<타입, 타입>(); 으로 선언한다


HashMap 값 추가 하기

import java.util.HashMap;

public class main {

	public static void main(String[] args) {
		HashMap<String, String> hashMapString = new HashMap<>();
		hashMapString.put("1", "첫번째");
		hashMapString.put("2", "두번째");
		hashMapString.put("3", "세번째");
		
		System.out.println(hashMapString);
	}

}

HashMap의 값을 추가하는 방법은 put(Key,Value)를 사용한다

들어가는 타입은 변수를 선언할 당시의 타입으로 맞춰서 입력해줘야한다


HashMap 값 삭제

import java.util.HashMap;

public class main {

	public static void main(String[] args) {
		HashMap<String, String> hashMapString = new HashMap<>();
		hashMapString.put("1", "첫번째");
		hashMapString.put("2", "두번째");
		hashMapString.put("3", "세번째");
		
		hashMapString.remove("2");
		System.out.println(hashMapString);
	}

}

HashMap의 값을 삭제하는 방법은 remove(Key) 메서드를 사용하여 해당하는 Key를 삭제 할 수 있다.

 

Clear() 메서드를 사용하면 HashMap의 모든 키 값을 삭제 할 수 있다.

import java.util.HashMap;

public class main {

	public static void main(String[] args) {
		HashMap<String, String> hashMapString = new HashMap<>();
		hashMapString.put("1", "첫번째");
		hashMapString.put("2", "두번째");
		hashMapString.put("3", "세번째");
		
		hashMapString.remove("2");
		System.out.println(hashMapString);
		
		hashMapString.clear();
		System.out.println(hashMapString);
	}

}


HashMap 값 출력하기

HashMap의 값을 출력하는 방법은 for 문과 Iterator 클래스를 사용한다.

 

첫번째 for 문

import java.util.HashMap;
import java.util.Map;

public class main {

	public static void main(String[] args) {
		HashMap<String, String> hashMapString = new HashMap<>();
		hashMapString.put("1", "첫번째");
		hashMapString.put("2", "두번째");
		hashMapString.put("3", "세번째");
		
		for(Map.Entry<String, String> value : hashMapString.entrySet()) {
			System.out.println("Key : " + value.getKey() + " Value : " + value.getValue());
		};
	}

}

for(*Map.Entry<타입, 타입> 변수명 : entrySet() ) 으 사용하여 HashMap을 반복문을 실행한다.

value.getKey() / value.getValue() 메서드를 사용하여 HashMap의 Key 값과 Value 값을 가져올 수 있다.

* Map.Entry 는 Map 의 nested class(static) 이다.

Key와 Value로 하나의 쌍을 이루는 map entry이다. 

Map.Entry()함수는 map의 coollection-view를 return 한다.


두번째 Iterator 클래스

Iterator는 자바의 컬렉션 프레임웍에서 저장되어있는 요소를 읽어오는 표준화된 방법중 하나이다

이 안의 구성중

hasNext() : 안의 다음요소가 있는지 확인하고 있다면 true, 없다면 false를 반환한다

next() : 안의 다음요소를 반환한다. 즉 가지고 있는 내용을 반환한다.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class main {

	public static void main(String[] args) {
		HashMap<String, String> hashMapString = new HashMap<>();
		hashMapString.put("1", "첫번째");
		hashMapString.put("2", "두번째");
		hashMapString.put("3", "세번째");
		
		Iterator<Entry<String,String>> iterator = hashMapString.entrySet().iterator();
		while(iterator.hasNext()) {
			Map.Entry<String, String> entry = iterator.next();
			System.out.println("Key : " + entry.getKey() + ", Value : " + entry.getValue());
		}
		
	}

}


 

반응형

'Data Structure' 카테고리의 다른 글

그래프 ( Graph )  (0) 2022.05.28
HashTable VS HashMap  (0) 2022.05.22
해쉬 테이블 ( HashTable )  (1) 2022.04.16
트리 (Tree)  (0) 2022.04.07
큐(Queue)  (2) 2022.04.02