티스토리 뷰
🎈 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
- 메인메소드
- 오블완
- @Spring
- Java
- 유효성 검사
- 이진탐색
- 백준
- ddl-auto
- JPA
- N+1문제
- @ConfigurationProperties
- null
- 자바
- upperBound
- Optional
- lowerBound
- @Value
- uncheckedException
- checkedException
- 동등성
- NPE
- 생성자
- Thymeleaf
- springboot
- 티스토리챌린지
- StreamAPI
- id생성전략
- 일급컬렉션
- @NoArgsConstructor
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함