해시맵
해시맵을 위한 HashTable 클래스와 HashMap 클래스가 있습니다. 두 클래스는 유사합니다만 HashTable 클래스는 자바의 초기 버전과 호환성을 위해 남겨두었을 뿐 최근에는 잘 사용되지 않습니다. 그래서 해시맵을 사용하도록 합니다.
해시맵의 ADT
해시맵의 동작 방식은 해시 테이블과 동일하기 때문에 해시맵의 ADT만 표를 통해서 간단하게 설명하겠습니다.
구분 | 정의 | 설명 |
연산 | ValueType put(KeyType key,ValueType value) | 해시맵에 데이터를 저장합니다. 첫 번째 매개변수는 해당 데이터의 key값, 두 번째 매개변수는 해당 key에 해당하는 value값입니다. 반환하는 값은 해시맵 내에 동일한 key에 해당하는 값이 있었다면 그 key에 대한 value값을 반환합니다. |
ValueType get(KeyType key) | key값에 대한 value값을 반환합니다. | |
ValueType remove(KeyType key) | 해시맵에서 key에 해당하는 데이터를 삭제합니다. | |
boolean containsKey(KeyType key) | 해시맵 안에 해당 key가 있다면 true, 없다면 false를 반환합니다. | |
void clear() | 해시맵 안의 모든 데이터를 삭제합니다. | |
상태 | int isEmpty() | 해시맵 안에 데이터가 없다면 true, 있다면 false를 반환합니다. |
int size() | 해시맵 안에 있는 데이터의 개수를 반환합니다. |
HashMap 클래스 사용하기
다음 코드를 보면서 HashMap 클래스의 사용 방법을 알아보겠습니다.
// HashMap<KeyType, ValueType>입니다.
HashMap<String, Integer> hashMap = new HashMap<>();
// hashMap에 데이터 추가
hashMap.put("ABC", 10);
hashMap.put("BBB", 20);
hashMap.put("AAA", 30);
hashMap.put("ABC", 15);
System.out.println(hashMap.isEmpty()); // false
System.out.println(hashMap.get("ABC")); // 15
System.out.println(hashMap.containsKey("ABC")); // true
hashMap.remove("ABC"); // hashMap에서 키가 "ABC"인 데이터 제거
System.out.pritnln(hashMap.size()); // 2
hashMap.clear(); // 해시맵의 모든 데이터 삭제
System.out.println(hashMap.isEmpty()); //true
해시맵을 선언할 때는 HashMap<KeyType, ValueType>과 같이 선언합니다. 코드에서는 키로 String을, 값으로 Integer를 저장하는 해시맵을 생성했습니다. 만약 키로 Integer를, 값으로 String을 젖아하려면 HashMap<Integer, String>과 같이 선언하면 됩니다.
그리고 동일한 "ABC"라는 키에 대해 10이라는 값을 먼저 넣고 이후에 15라는 값을 넣었을 때 기존 10은 삭제되고 15로 대체되므로 이후 get("ABC")을 실행하면 15를 반환합니다. 해시맵은 코딩 테스트에서 상당히 많이 사용합니다.
반응형
'서버&백엔드 > 🔥 JAVA' 카테고리의 다른 글
Stream | String문자열 내부 정렬 (0) | 2024.11.21 |
---|---|
Java | Map과 FlatMap 차이 (0) | 2024.11.20 |
String[]을 ArrayDeque<String>로 변환 (0) | 2024.11.17 |
JAVA | 문자열 슬라이싱 (1) | 2024.11.03 |
JAVA | StringBuilder (0) | 2024.11.03 |