当前位置:首页 > java > 正文内容

java 内存分页实现以及list的stream流

root5年前 (2022-01-17)java3514
package com.how2java.springboot;

import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class MemoryPagination {

    public static <T> List<T> pagination(List<T> records, int pageNum, int pageSize) {
        if (CollectionUtils.isEmpty(records)) {
            return Collections.emptyList();
        }
        int totalCount = records.size();
        int remainder = totalCount % pageSize;
        int pageCount = (remainder > 0) ? totalCount / pageSize + 1 : totalCount / pageSize;
        if (remainder == 0) {
            return records.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
        } else {
            if (pageNum == pageCount) {
                return records.stream().skip((pageNum - 1) * pageSize).limit(totalCount).collect(Collectors.toList());
            } else {
                return records.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
            }
        }
    }

    public static void main(String[] args) {
        ArrayList<String> myList = new ArrayList();
        Collections.addAll(myList, "q", "w", "e", "r");
        List<String> pagination = pagination(myList, 2, 2);
        for (String i : pagination) {
            System.out.println(i);
        }
    }

}

首先将list进行stream化,然后就是skip去除前几个数据,限制多少个结束,最后列表化


stream的常用方法

filter  过滤  .filter(x -> x.y == 20) 截取x的y等于20的数据

sorted 排序, 实现了 Comparable 接口 可以传递自己的排序规则

sorted((p1, p2) -> p1.getAge() - p2.getAge()


skip(long n)
删除前n个元素


limit(long n)

返回前n个元素


map(T -> R)
将流中的每一个元素 T 映射为 R(类似类型转换)

map(Person::getName)


collect(toList()) 可以把流转换为 List 类型


https://blog.csdn.net/fengfengchen95/article/details/102621844


扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://www.zhiqiu.top/?id=209

分享给朋友:

相关文章

java @Bean 注解

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。SpringIO...

java-Springboot的几个重要注解@controller、@service、 @repository、@component

1、@controller 控制器(注入服务)用于标注控制层,相当于struts中的action层2、@service 服务(注入dao)用于标注服务层,主要用来进行业务的逻辑处理3、@repository(实现dao访问)用于标注数据访问...

java springboot @ApiModelProperty用法

@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改 value–字段说明 name–重写属性名字 dataType–重写属性类型 required–是否...

java springboot 工具类之post、get请求

org.springblade.modules.netprobe.utilsorg.springframework.http.*org.springframework.util.CollectionUtilsorg.springframew...

java 读取json 文件并输出json字符串

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java...

实体类(VO,DO,DTO,PO)的划分

实体类(VO,DO,DTO,PO)的划分

经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析。得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应...