본문 바로가기
Java

[Java] HashMap 함수 사용하기

by doongjun 2021. 6. 16.
HashMap 이란?

HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션이다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 갖고 있다. Map은 Key와 Value로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조로 Key와 Value는 모두 객체이다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. HashMap은 이름 그대로 해싱을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보인다.

위 그림처럼 HashMap은 내부에 Key와 Value를 저장하는 자료구조를 갖고 있다. HashMap은 해시 함수를 통해 Key와 Value가 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 들어있는 위치 또한 관계가 없다. Key값은 중복이 불가능하고 Value는 중복이 가능하다(null도 가능). 

 

HashMap 사용법

 

HashMap 선언

//HashMap 생성
HashMap<String, String> map1 = new HashMap<String, String>();
		
//new에서 파라미터 타입 생량 가능
HashMap<String, String> map2 = new HashMap<String, String>();
		
//map1에서 모든 값을 가진 HashMap 생성
HashMap<String,String> map3 = new HashMap<>(map1);
		
//초기 용량(capacity) 지정
HashMap<String, String> map4 = new HashMap<>(10);
		
//초기 capacity, load factor 지정
//load factor : 해시 테이블 전체에서 얼마나 원소가 차 있는지를 나타내는 수치
HashMap<String, String> map5 = new HashMap<>(10, 0.7f);
		
//초기값 지정
HashMap<String, String> map6 = new HashMap<String, String>() {{
	put("a", "b");
}};

HashMap을 생성하려면 키 타입과 값 타입을 파라미터로 주고 기본 생성자를 호출하면 된다. HashMap은 저장공간보다 값이 추거로 들어오면 List처럼 공간을 추가로 늘리는데, List처럼 한 칸씩 늘리는 것이 아니라 약 2배로 늘려 과부하가 많이 발생한다고 한다. 때문에 저장할 초기에 저장할 데이터의 개수를 알고 있다면 Map의 초기 용량을 지정해주는 것이 좋다.

 

HashMap 추가

HashMap<Integer, String> map = new HashMap<>();
		
map.put(1, "쥐");
map.put(2, "바나나");
map.put(3, "호랑이");
		
System.out.println(map); //{1=쥐, 2=바나나, 3=호랑이}

HashMap에 값을 추가할때 put(key, value) 메소드를 사용하면 된다. 선언 시 HashMap에 설정해준 타입의 Key와 Value값을 넣어야 하며 만약 입력되는 키 값이 HashMap내부에 존재한다면 기존의 값은 새로 입력되는 값으로 대치된다.

 

HashMap 삭제

map.remove(1);
System.out.println(map); //{2=바나나, 3=호랑이}
		
map.clear();
System.out.println(map); //{}

HashMap의 값을 제거하려면 remove(key) 메서드를 사용하면 된다. 모든 값을 제거하려면 clear() 메소드를 사용하면 된다.

 

HashMap 값 출력

특정 Key값의 Value를 가져올때

get(key)

System.out.println(map.get(1)); //쥐

전체 출력

entrySet()

for (Entry<Integer, String> entry : map.entrySet()) {
	System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도

keySet()

for(Integer i : map.keySet()){
    System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도

Iterator

//entrySet().iterator()
Iterator<Entry<Integer, String>> entries = map.entrySet().iterator();
while(entries.hasNext()){
    Map.Entry<Integer, String> entry = entries.next();
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" +  entry.getValue());
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도
		
//keySet().iterator()
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
    int key = keys.next();
    System.out.println("[Key]:" + key + " [Value]:" +  map.get(key));
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도

 

 

 

출처: https://coding-factory.tistory.com/556

 

[Java] 자바 HashMap 사용법 & 예제 총정리

HashMap 이란? HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 키와 값으로 구성된 Entry객체를 저장하는

coding-factory.tistory.com

 

'Java' 카테고리의 다른 글

[Java] 추상클래스와 인터페이스  (0) 2021.11.30
[Java] BufferReader로 입력받기  (0) 2021.11.30
[Java] HashMap을 Value 기준으로 정렬하는 방법  (1) 2021.11.12
[Java] JRE와 JDK  (0) 2021.07.20

댓글