java - 使用可配置的 BatchSize 访问 ArrayList 的 Java-8 方法
问题描述
这是我的用例:
我有一个包含 1000 条记录的字符串的 responseList。有一个可配置的 batchSize。我必须迭代 responseList,并且对于每个 split=batch 大小,我必须构造 DataResponseBean 和 publishToKafka。
比如我的responseList.size=1000,batchSize=100,我会构造DataResponseBean,向Kafka发布数据10次,而不是1000次。此外,如果在 publishToKafka 中抛出任何异常,我应该中断流并停止处理 responseList。
我需要帮助将其转换为 Java 8 样式(我迭代列表和增加页码的方式。
public class DataResponseBean {
List<String> data;
public List<String> getData() {
return data;
}
public void setData(List<String> data) {
this.data = data;
}
public MetaData getMetaData() {
return metaData;
}
public void setMetaData(MetaData metaData) {
this.metaData = metaData;
}
MetaData metaData;
}
public class MetaData {
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
String orderId;
int pageNumber;
}
这是我的 Java 7 代码风格:
import model.DataResponseBean;
import model.MetaData;
import java.util.*;
public class TestJavaClass {
public static void main(String[] args) {
List<String> dataList= Arrays.asList("jony","rakshi","raman","reka","nency","raman","rishi");
String orderId="12345";
int pageNumber=0;
int batchSize=2;
int currentBatchSize=0;
List<String> batch=new ArrayList<String>();
for(String data:dataList){
try{
batch.add(data);
currentBatchSize++;
if(currentBatchSize>=batchSize){
DataResponseBean dataResponseBean=new DataResponseBean();
MetaData metaData=new MetaData();
dataResponseBean.setData(batch);
metaData.setOrderId(orderId);
metaData.setPageNumber(pageNumber);
dataResponseBean.setMetaData(metaData);
publishToKafka(dataResponseBean);
batch.clear();
pageNumber++;
currentBatchSize=0;
}
}
DataResponseBean dataResponseBean=new DataResponseBean();
MetaData metaData=new MetaData();
dataResponseBean.setData(batch);
metaData.setOrderId(orderId);
metaData.setPageNumber(pageNumber);
dataResponseBean.setMetaData(metaData);
publishToKafka(dataResponseBean);
batch.clear();
}catch(Exception e){
batch.clear();
break;
}
}
private static void publishToKafka(DataResponseBean dataResponseBean) throws Exception {
System.out.println("----------RESPONSE start================-");
System.out.println("-----------"+dataResponseBean.getMetaData().getPageNumber());
List<String> dataList=dataResponseBean.getData();
dataList.forEach(data->{
System.out.println("------data-----"+data);
});
}
}
请帮我将此代码转换为 Java 8 样式。我对 Java 8 很陌生。
[注意:对于我当前工作区中的某些问题,Lombok 无法正常工作。我将使用 Lombok 作为 DataResponseBean 和 MetaData]
解决方案
推荐阅读
- r - How to build a Docker image with the right R and package versions and open Rstudio with them afterwards?
- ios - 可以在不遵守苹果自动布局标准的情况下向应用商店提交 ios 应用吗?
- android - 如何根据数据更改列表视图中的文本视图颜色
- c# - 如何覆盖 MassTransit 默认交换和队列拓扑约定?
- java - 如何根据用户输入(扫描仪)获取 SQL 准备语句
- c++ - 使用 apt-get 存储库中的 arpack 工具:未定义的引用,分段错误
- excel - 运行时 1004:粘贴时对象“工作表”的方法“范围”失败
- javascript - 在 laravel 中使用 ajax 在输入中显示数据
- android - Android中多个位置具有多种颜色的渐变圆
- oauth - 身份服务器 - 根据应用程序中的选择动态更新声明