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

[오늘의 자바 문법] Map.Entry

닉네임생각즁 2024. 1. 12. 20:40

 

https://fruits2lim.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Lv1-%EC%99%84%EC%A3%BC%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%9C-%EC%84%A0%EC%88%98

 

[프로그래머스/Lv.1] 완주하지 못한 선수

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

fruits2lim.tistory.com

효율성테스트를 통과하지 못하면서 또 새로운 것을 공부하게 되었다

 

https://fruits2lim.tistory.com/entry/%EC%98%A4%EB%8A%98%EC%9D%98-%EC%9E%90%EB%B0%94-%EB%AC%B8%EB%B2%95-Map-getOrDefault

 

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

getOrDefault(Object key, V DefaultValue) - key에 해당하는 value가 있다면 value 출력 - key에 해당하는 value가 없다면 DefaultValue 출력 예를 통해 더 알아보자 import java.util.HashMap; import java.util.Map; public class MapExamp

fruits2lim.tistory.com

(이전에 공부한 개념)

 

 

 

** Map 전체를 돌면서 값을 얻기 위해 이전에 사용했던 방법

Map.keySet()
Map<String, String> map = new HashMap<String, String>();

for(String key : map.keySet()) {
	String value = map.get(key);
}

 

 

- Map.keySet()을 사용하여 키 집합을 얻은 다음 반복

- Map 크기 커지면 성능에 영향을 미침

 → keySet() 메서드를 호출하여 키 집합을 만드는데, 이는 Map의 모든 항목을 이전에 한 번 더 조회하기 때문

 

 

** Map.Entry

https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html

 

Map.Entry (Java Platform SE 8 )

All Known Implementing Classes: AbstractMap.SimpleEntry, AbstractMap.SimpleImmutableEntry Enclosing interface: Map public static interface Map.Entry A map entry (key-value pair). The Map.entrySet method returns a collection-view of the map, whose elements

docs.oracle.com

- Map에 저장된 모든 key-value 쌍을 각각의 key-value를 갖고 있는 하나의 객체로 얻을 수 있음

- 각각의 객체는 getKey()와 getValue() 메서드를 사용하여 키와 값에 접근할 수가 있음

- setValue(V value) : 객체의 key에 대한 value를 수정할 수 있음

- key와 value가 연결되어 하나의 객체로 표현되기 때무넹 서로 연관되어 있다는 것을 명시할 수 있음

- key값을 얻어와서 수정하고 저장해줄 필요없이 setValue()를 통해 동적으로 편하게 수정할 수 있음

 

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));
		
		map.put("Z", 4); 
		System.out.println(map);
		System.out.println(map.getOrDefault("Z", 1000));
		
		System.out.println("===이전 방법===");
		for (String key : map.keySet()) {
			System.out.println("key : " + key);
			System.out.println("value : " + map.get(key));
		}
		System.out.println("============");
		System.out.println("");
		System.out.println("==새로운 방법==");
		for (Map.Entry<String, Integer> entry : map.entrySet()) {
			System.out.println("key : " + entry.getKey());
			System.out.println("value : " + entry.getValue());
		}
		System.out.println("============");
	}
}

 

 

성능이 더 좋은 방법으로 쓰도록 노력해야겠다

배울게 산더미,,,,,,,,😥😥