판봉 개발 일기

Map 컬렉션중 하나인 HashMap에 대하여 알아보자 본문

자바 복습

Map 컬렉션중 하나인 HashMap에 대하여 알아보자

판봉 2021. 7. 13. 18:43
728x90

HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션이다.

HashMap의 키로 사용할 객체는 hashCode()와 equals()메소드를 재정의해서 동등 객체가 될 조건을 정해야 한다.

그 이유는 객체가 달라도 동등 객체라면 같은 키로 간주하고 중복 저장되지 않도록 하기 위함이다.

※동등 객체의 조건은 hashCode()의 리턴값이 같아야 하며, equals() 메소드가 true를 리턴해야 한다.

(주로 키는 String을 잘씀)

 

HashMap을 생성하는 방법은 아래와 같다

Map<K, V> map = new HashMap<K, V>();

주의 할 점으로는

키와 값의 타입은 기본타입을 사용할 수 없으며 클래스 및 인터페이스 타입만 사용이 가능하다.

 

밑은 키를 String타입, 값으로 Integer 타입을 사용하는 코드이다.

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

다음 코드는 HashMap의 사용 방법의 예이다.

class Student {
public int sno;
public String name;

public Student(int sno, String name) {
this.sno = sno;
this.name= name;
}

public boolean equals(Object obj) { // equals 메소드 재정의
if(obj instanceof Student) {
	Student student = (Student) obj;
    return (sno==student.sno)&&(name.equals(student.name));
} else {
	return false;
}

}
	public int hashCode() { // 학번과 이름이 같다면 동일하나 값을 리턴
    	return sno + name.hashCode();
    }
}
import java.util.*;

public class HashMapExample {
	public static void main(String[] args) {
    Map<Student, Integer> map = new HashMap<Student, Integer>();
    
    map.put(new Student(1, "홍길동"), 95);
    map.put(new Student(1, "홍길동"), 95);
    
    System.out.println("총 Entry 수 : map.size());
    }
}

'자바 복습' 카테고리의 다른 글

LIFO 컬렉션과 Stack 클래스  (0) 2021.07.14
Hashtable에 대하여  (0) 2021.07.14
Map 컬렉션  (0) 2021.07.13
Set 컬렉션중 하나인 HashSet에 대하여 알아보자  (0) 2021.07.13
Set 컬렉션에 대하여 알아보자  (0) 2021.07.13