코딩테스트-알고리즘/문법

[오늘의 자바 문법] Map - getOrDefault

닉네임생각즁 2024. 1. 12. 17:29

 

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

 

Insert Dimensions to complete Expression/ReferenceType

I'm a newbie to Java. I have provided a short snippet from my code for BFS. public int bfs(Person p, Person q) { private HashMap<Person, boolean> marked; private int count; mar...

stackoverflow.com

 

Generic 문법

- 클래스 내부에서 사용할 데이터 타입을 외부에서 지정해줌

- 컴파일러는 컴파일 과정에서 해당 타입으로만 실행될 수 있도록 강제됨

- 변수를 사용할 때 타입을 지정해주는것처럼 제네릭은 객체에 타입을 지정해주는것

- <T> : 다이아몬드 연산자 / T에는 타입뿐만 아니라 클래스도 넣어줄 수 있음(클래스도 타입이다)

- 할당받을 수 있는 타입은 Reference Type !!!

- int, double 같은 Primitive Type(원시타입)은 제네립 타입 파라미터로 넘길 수 없음

 

https://velog.io/@dmsgp8292/%EA%B8%B0%EB%B3%B8%EC%9E%90%EB%A3%8C%ED%98%95%EA%B3%BC-Wrapper-%ED%81%B4%EB%9E%98%EC%8A%A4

 

기본자료형과 Wrapper 클래스

기본 자료형 Primitive Type기본 자료형은 변수의 타입으로 쓸 수 있는 자료형이다.기본자료형은1\. null 값을 허용하지 않는다. 2\. 정해진 메모리를 할당한다.3\. 스택(stack)영역에 저장된다.기본 자료

velog.io

 

 

즉, 객체(참조자료형)를 넣어줘야 하는 자리에 기본자료형을 넣어줘서 생기는 문제였다 주의주의!!!