티스토리 뷰
🎈 Hash
💡 key : value로 이루어진 자료구조
모든 데이터 타입으로 접근이 가능하다. → 배열보다 편리하다.
자바에서는 주로 HashMap 자료구조를 사용한다.
Map 인터페이스를 구현한 Map Collections 중 하나로 Map 인터페이스를 상속하고 있어서 Map이 성질을 그대로 가지고 있다.
Key는 중복을 허용하지 않지만 Value는 중복이 허용된다.
import java.util.HashMap;
// Key가 String이고 Value가 Integer 타입의 Entry를 가지는 HashMap 선언
HashMap<String, Integer> map = new HashMap<>();
// 삽입 --> map.put(Key값, Value값)
map.put("apple", 1);
map.put("melon", 2);
// 삭제 --> map.remove(Key값)
map.remove("apple");
map.clear(); --> 모든 값 제거
// 출력 --> map.get(Key값)
map.get("apple");
// 1. Key값 가져오기 --> keySet()
for(String k : map.keySet()) {
	System.out.println(k);
} // "apple", "melon"
// 2. Value값 가져오기 --> values()
Collections<Integer> values = map.values(); // [10, 2]
// 3. Key : Value값 가져오기 --> entrySet() (빠름)
for(Map.Entry<String, Integer> entry : map.entrySet()) {
	System.out.println(entry.getKey() + " : " + entry.getValue());
} // apple : 1, melon : 2
// 4. Key : Value값 가져오기 --> forEach() Java 8 버전 이후부터 가능
map.forEach((k, v) -> {
		System.out.println(k + " : " + v)
}); // apple : 1, melon : 2
// map에 apple이라는 key가 있으면 apple의 value를 반환 / 없으면 0 반환
getOrDefault("apple", 0);
// nums배열의 각 원소가 map에 Key로 있으면 해당 value + 1을 해주고 없으면 0으로 하고 +1
for(Integer num : nums) {
            map.put(num, map.getOrDefault(num, 0) + 1);
}
get(key) 사용 시 key가 존재하지 않으면 null을 반환한다.
👉 이 때 null 대신 기본 반환 값을 반환하게 해주는 메소드 : getOrDefault()
getOrDefault(Object key, V defaultValue)
👉 key : 값을 가져와야 하는 요소의 Key 값
👉 defaultValue : 지정된 key로 매핑된 값이 없을 경우 반환하는 기본 값
// map에 apple이라는 key가 있으면 apple의 value를 반환 / 없으면 0 반환
getOrDefault("apple", 0);
// nums배열의 각 원소가 map에 Key로 있으면 해당 value + 1을 해주고 없으면 0으로 하고 +1
for(Integer num : nums) {
            map.put(num, map.getOrDefault(num, 0) + 1);
}
시간 복잡도
1️⃣ 삽입 : O(1)
2️⃣ 삭제 : O(1)
3️⃣ 탐색 : O(1)
'java' 카테고리의 다른 글
| 생성자 (0) | 2023.12.12 | 
|---|---|
| error-Your build is currently configured to use Java 17.0.7 and Gradle 6.8. (1) | 2023.12.05 | 
| 동일성 vs 동등성 (0) | 2023.08.17 | 
| stream API + Optional (0) | 2023.07.15 | 
| stream API (0) | 2023.07.10 | 
                      공지사항
                      
                  
                
                  
                  
                    최근에 올라온 글
                    
                
                  
                  
                    최근에 달린 댓글
                    
                
                  
                  - Total
 
- Today
 
- Yesterday
 
                    링크
                    
                  
                
                  
                  
                    TAG
                    
                
                  
                  - NPE
 - 생성자
 - springboot
 - Spring
 - 자바
 - @Value
 - @Spring
 - 메인메소드
 - 일급컬렉션
 - ddl-auto
 - N+1문제
 - 이진탐색
 - lowerBound
 - @NoArgsConstructor
 - 백준
 - StreamAPI
 - upperBound
 - 티스토리챌린지
 - checkedException
 - JPA
 - uncheckedException
 - 동등성
 - Java
 - id생성전략
 - Optional
 - Thymeleaf
 - 오블완
 - 유효성 검사
 - null
 - @ConfigurationProperties
 
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                    글 보관함