- HashMap은 자바에서 제공하는 데이터 구조 중 하나로, 키-값(key-value) 쌍으로 데이터를 저장하는 자료구조이다.
- 키(key)는 고유한 식별자로 사용되며, 각 키는 고유한 해시값(hash value)을 가지고 있다.
- HashMap은 Map 인터페이스를 구현한 Map 대표 컬렉션이다.
Map ?
- Map은 각 키(key)에 해당하는 값(value)을 저장하고, 키를 통해 해당 값에 접근할 수 있다.
키는 고유한 식별자로 사용되며, 각 키는 중복되지 않아야 한다.- 따라서 Map에 동일한 키로 여러 개의 값을 저장할 수는 없으며, 키를 통해 값을 검색하거나 변경할 수 있습니다.
- 빠른 데이터 접근 :
- HashMap은 해시 테이블(hash table)을 기반으로 동작하여 데이터의 추가, 검색, 삭제에 평균적으로 상수 시간(O(1))의 성능을 제공.
- 해시 함수를 사용하여 키를 해시값으로 변환하고, 이를 배열의 인덱스로 사용하여 데이터의 위치를 계산. 이를 통해 데이터에 빠르게 접근, 데이터 효육적 관리 가능.
- 유연한 데이터 저장:
- HashMap은 키-값(key-value) 쌍을 저장하는 자료구조로, 키와 값은 모두 객체(Object)로 저장되므로, 어떠한 객체도 키 또는 값으로 사용할 수 있습니다.
- 각 키(Key)는 고유해야 하며, 중복된 키는 허용되지 않지만, 값(Value)은 중복되어 저장될 수 있습니다.
- 데이터를 저장할 때 해시 충돌(collision)이 발생할 수 있으며, 이를 체인 형태로 처리하여 동일한 버킷에 연결 리스트 또는 이중 연결 리스트로 데이터를 저장.
- 순서의 보장이 없음:
- HashMap은 데이터의 순서를 보장하지 않는다. 데이터를 추가한 순서나 키의 순서에 의존해서는 안 된다.
- HashMap은 해시 테이블을 기반으로 동작하며, 키의 해시값에 따라 데이터가 배치됩니다. 따라서 데이터의 순서는 해시값과 버킷의 배치에 의해 결정됩니다.
- 만약 순서를 보장해야 하는 경우라면 "LinkedHashMap"을 사용.
LinkedHashMap ?
LinkedHashMap은 키-값 쌍을 유지하면서 순서를 보장하는 HashMap의 변형.
import java.util.HashMap;
HashMap<Key 타입, Value 타입> hashMap = new HashMap<>();
hashMap.put(키, 값);
hashMap.remove(키);
기본
System.out.println(map); // 전체 출력 System.out.println(map.get(1)); // Key값 1의 value얻기
entrySet() 활용
for (Entry<Integer, String> entry : map.entrySet()) { System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue()); }
KeySet() 활용
for(Integer i : map.keySet()){ //저장된 key값 확인 System.out.println("[Key]:" + i + " [Value]:" + map.get(i)); }