Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 集合上的分页和排序_Sorting_Spring Data_Paging_Vaadin8 - Fatal编程技术网

Sorting 集合上的分页和排序

Sorting 集合上的分页和排序,sorting,spring-data,paging,vaadin8,Sorting,Spring Data,Paging,Vaadin8,我想对照片的ArrayList应用分页和排序。rest客户端将检索该列表。这里是我尝试分页,但返回所有5k元素。我试着在JpaRepository中实现类似的分页。排序是通过compareTo方法完成的,似乎也不能正常工作 PhotoServiceImpl.java private List<Photo> repository; public PhotoServiceImpl() { RestTemplate restTemplate = new Re

我想对照片的ArrayList应用分页和排序。rest客户端将检索该列表。这里是我尝试分页,但返回所有5k元素。我试着在JpaRepository中实现类似的分页。排序是通过compareTo方法完成的,似乎也不能正常工作

PhotoServiceImpl.java

   private List<Photo> repository;

    public PhotoServiceImpl() {
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<List<Photo>> photoResponse = restTemplate.exchange("https://jsonplaceholder.typicode.com/photos", HttpMethod.GET, null, new ParameterizedTypeReference<List<Photo>>() {
        });
        this.repository = photoResponse.getBody();
    }

    @Override
    public List<Photo> findAll() {
        return repository;
    }

    @Override
    public Page<Photo> findAll(Pageable pageable) {
        List<Photo> photos = findAll();
        return new PageImpl<Photo>(photos, new PageRequest(pageable.getPageNumber(), pageable.getPageSize()), photos.size());
    }
    @Override
    public Page<Photo> findAll(Pageable pageable, Sort.Direction sortOrder) {
        List<Photo> photos = findAll();
        return new PageImpl<Photo>(photos, new 
PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sortOrder), photos.size());
    }
@Override
public List<Photo> findAll(Sort.Direction sortOrder) {
    List<Photo> photos = repository
            .stream()
            .sorted()
            .collect(Collectors.toList());

    if (sortOrder.isDescending())
        Collections.reverse(photos);

    return photos;
}

在PageRequest实例中获取具有页面大小和排序集的所有照片和包装并不能满足您的需要。PageRequest类或PageImpl类不执行将数据列表切片到页面或执行排序。你必须自己做

List<Photo> photos = findAll();
//
// << Add your page extraction and sorting code here >>
//
return new PageImpl<Photo>(photos, 
    new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sortOrder), photos.size());
List<Photo> photos = findAll();
//
// << Add your page extraction and sorting code here >>
//
return new PageImpl<Photo>(photos, 
    new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sortOrder), photos.size());