Java 函数式接口BiConsumer

BiConsumer是一个函数式接口,代表一个接受两个输入参数且不返回任何内容的操作符

java 复制代码
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;

public class BatchOperate<T> {
    private int batchSize=3000;
    private List<T> content=new ArrayList<>();
    private BiConsumer<Integer,List<T>> consumer;
    private int pageNo;
    private long total;

    public void setConsumer(BiConsumer<Integer,List<T>> consumer){
        this.consumer=consumer;
    }

    public void setBatchSize(int batchSize) {
        this.batchSize = batchSize;
    }

    public void addBatch(T t){
        this.content.add(t);
        this.total++;
        if (content.size()>=batchSize){
            this.executeBatch();
        }
    }

    public long getTotal() {
        return total;
    }

    public void executeBatch() {
        if(this.content.size()>0){
            pageNo++;
            consumer.accept(this.pageNo,this.content);
            this.content=new ArrayList<>();
        }
    }

}

使用:

java 复制代码
private void processUser(){
	int size  = 1000;
	BatchOperate<User> batchOperate = new BatchOperate<>();
	batchOperate.setBatchSize(size);
	batchOperate.setConsumer((index, list) -> {
		log.info("######处理用户信息:{}", index);
		removeUserInfo(list);
	});

	for(int i=0; i < 9000; i++){ //生成用户放到 batchOperate
		User user = new User();
		batchOperate.addBatch(user);
	}
	batchOperate.executeBatch();
}


private void removeUserInfo(List<user> userList){
	//处理逻辑
	System.out.println(userList.size());
}
相关推荐
泡海椒1 分钟前
JQuick-Excel 导入反向映射实战:让中文表头稳定落到业务字段
开发语言·python·excel
专业程序开发源5 分钟前
springboot古城景区管理系统88564-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
泡茶喝茶写代码11 分钟前
A股量化数据工程:从 REST 接口到策略信号(第 7 篇):盈利能力因子:毛利率、净利率与 ROE
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
朝朝辞暮i12 分钟前
VLA 系统学习第 2 课:Behavior Cloning——机器人究竟怎么从示范中学动作?
人工智能·python·vla
znx93918 分钟前
手动交易 VS 量化交易:孰优孰劣?深度对比
人工智能·python·机器学习·期魔方
小蒜学长20 分钟前
基于微信小程序的遇见咖啡店点餐系统设计与实现(代码+数据库+LW)
java·spring boot·后端·微信小程序·咖啡店点餐系统
lisanmengmeng22 分钟前
NRPE 添加命令(三)
java·linux·服务器
Wang's Blog24 分钟前
Java框架 SpringCloud 快速入门: 网关的 CORS 跨域配置
java·开发语言·spring cloud
驭渊的小故事28 分钟前
NC229023 题解:二分答案求解“最大化最小值“问题
java·算法
for_ever_love__29 分钟前
概率与统计——分布、期望与贝叶斯,语言模型的建模基础
python·机器学习·大模型·概率论