-
[TIL] Map을 List로 가져오기TIL(Today I Learned) 2022. 12. 23. 13:18
*20221223의 회고
스프링부트로 회원 도메인과 레포지토리를 만들던 중, Map에 저장한 값들을 List로 변환해서 반환해야 하는 일이 생겼다. 그 과정을 오늘 알게되어 이 부분을 정리해보려 한다.
1. 문제점
- MemberRepository 인터페이스에서는 findAll() 메서드의 반환값이 List형태이다.
- MemberRepository 인터페이스를 구현한 구현체인 MemoryMemberRepository 에서는 회원의 id와 회원을 Map 에 저장하는 방식을 사용한다. 따라서 Map을 List로 바꿔서 반환해줘야 하는 과정 필요!
2. 시도한 방법과 해결 방법
- Map.values()를 이용해 Map에 있는 value들을 다 가져와서 ArrayList의 생성자로 넣어줘서 리스트를 생성한 후 리턴.
3. 알게된 점
- HashMap의 values()는 해당 map의 value 목록을 Collection 형태로 리턴함.
- List 생성자로 Map을 List로 변환할 수 있다.
4. 추가로 정리한 것
- Map : key와 value 쌍으로 데이터를 보관하는 자료구조.
- HashMap : Map 인터페이스를 구현한 대표적인 Map 컬렉션
- 해싱을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보임
- HashMap 함수
- 선언과 생성 : HashMap <key의 형, value의 형> 객체이름 = new HashMap<>();
- key 와 value 모두 객체이기 때문에, wrapper 클래스 사용! (int (x) -> Integer(O))
- map.put('A', 3) : 'A' 라는 key를 가진 객체에 3이라는 value를 넣어서 그 객체를 map에 넣어줌
- map.get(x) : key가 x인 map의 value 값을 가져온다.
- map.getOrDefault(x, 0) : key가 x인 map의 value값을 가져오는데, value 값이 없다면 0을 가져온다.
- map.keySet() : map의 key 값을 모두 출력 (key들을 Set 형태로 반환)
- map.containsKey('A') : map 객체에 A라는 key값이 있으면 true 리턴, 없으면 false 리턴
- map.size() : map 객체의 key의 개수를 알려줌
- map.remove('A') : map에서 A라는 key를 가진 객체 제거, A의 value를 리턴
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] JDBC, JDBCTemplate, JPA (0) 2022.12.27 [TIL] final 키워드와 @Autowired 에노테이션 정리 (0) 2022.12.26 [TIL] 스프링 부트 자바 버전 변경으로 인한 오류 (2) 2022.12.22 [TIL] 20221221의 회고... (2) 2022.12.21 [TIL] JWT에 대하여... (2) 2022.12.20