Map<String, PostResponseDto> postDto=postService.findAll();
int len_postDto=postDto.size();
int start=(int) pageable.getOffset();
int end = Math.min((start + pageable.getPageSize()), len_postDto);
Page<PostResponseDto> page=new PageImpl<>(new ArrayList<PostResponseDto>(postDto.values()).subList(start, end), pageable, len_postDto);
Map 타입 postDto의 값을 ArrayList에 담아서 리스트를 생성한다.
LinkedList는 데이터가 많을수록 접근성이 떨어지기 때문에 ArrayList를 선택했다.
subList로 start에서 end까지 자른다.(정확하게는 말하면, start에서 end-1까지)
start와 end가 같으면 빈 리스트가 리턴된다.
참고 👇
https://stackoverflow.com/questions/66518145/implement-paging-for-java-map
https://docs.oracle.com/javase/8/docs/api/java/util/List.html#subList-int-int-
반응형