getOrDefault(Object key, V DefaultValue)
- key에 해당하는 value가 있다면 value 출력
- key에 해당하는 value가 없다면 DefaultValue 출력
예를 통해 더 알아보자
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
System.out.println(map.get("A"));
System.out.println(map.getOrDefault("C", 0));
System.out.println(map.getOrDefault("Z", 1000));
}
}
다음과 같이 결과가 나온다
{A=1, B=2, C=3} 로 이루어진 HashMap인데
map.getOrDefault("C", 0) -> C의 값이 있으니까 C 값인 3이 나온다
map.getOrDefault("Z", 1000) -> Z의 값이 없으니까 DefaultValue에 해당하는 1000이 나온다
map.put("Z", 4);
System.out.println(map);
System.out.println(map.getOrDefault("Z", 1000));
다음과 같이 추가해주면 Z의 값이 있으니 Z 값인 4가 나온다
데이터 두개를 비교해서 다른게 뭔지 찾아낼 때 유용하게 쓸 수 있는 메서드인거같다!
+ 추가로 알게된 것
Map<String, int> map = new HashMap<String, int>();
처음에 잘 몰라서 실수로 int로 써서 만들려고 했더니 다음과 같은 오류가 떴다
Syntax error, insert "Dimensions" to complete ReferenceType
https://stackoverflow.com/questions/34885463/insert-dimensions-to-complete-expression-referencetype
Generic 문법
- 클래스 내부에서 사용할 데이터 타입을 외부에서 지정해줌
- 컴파일러는 컴파일 과정에서 해당 타입으로만 실행될 수 있도록 강제됨
- 변수를 사용할 때 타입을 지정해주는것처럼 제네릭은 객체에 타입을 지정해주는것
- <T> : 다이아몬드 연산자 / T에는 타입뿐만 아니라 클래스도 넣어줄 수 있음(클래스도 타입이다)
- 할당받을 수 있는 타입은 Reference Type !!!
- int, double 같은 Primitive Type(원시타입)은 제네립 타입 파라미터로 넘길 수 없음
즉, 객체(참조자료형)를 넣어줘야 하는 자리에 기본자료형을 넣어줘서 생기는 문제였다 주의주의!!!
'코딩테스트-알고리즘 > 문법' 카테고리의 다른 글
[오늘의 자바 문법] HashMap 정렬 & 최대값/최소값 찾기 (0) | 2024.01.13 |
---|---|
[오늘의 자바 문법] Map.Entry (0) | 2024.01.12 |
오늘의 자바 문법 (0) | 2024.01.07 |
오늘의 자바 문법 (1) | 2024.01.06 |
오늘의 자바 문법 (ArrayList -> Array) (0) | 2024.01.05 |