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());
}
相关推荐
市场部需要一个软件开发岗位几秒前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
历程里程碑13 分钟前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
weixin_3954489114 分钟前
mult_yolov5_post_copy.c_cursor_0205
c语言·python·yolo
执风挽^30 分钟前
Python基础编程题2
开发语言·python·算法·visual studio code
梦帮科技30 分钟前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
程序员泠零澪回家种桔子32 分钟前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
CodeCaptain41 分钟前
nacos-2.3.2-OEM与nacos3.1.x的差异分析
java·经验分享·nacos·springcloud
纤纡.1 小时前
PyTorch 入门精讲:从框架选择到 MNIST 手写数字识别实战
人工智能·pytorch·python
Lois_Luo1 小时前
关闭Win10强制所有应用以管理员身份运行
windows
kjkdd1 小时前
6.1 核心组件(Agent)
python·ai·语言模型·langchain·ai编程