java - 使用java流替换复杂代码
问题描述
我有下面的代码块,我正在尝试使用 java 流进行转换。
for(Emp emp:empList){
if(combinedData.getOrg()==null){
combinedData.setOrg(emp.getCompany());
}
combinedData.addToList(emp.getWorkLog());
if(combinedData.getRawData()!=null){
combinedData.setRawData(combinedData.getRawData()+emp.getData());
}
else{
combinedData.setRawData(emp.getData());
}
}
我面临的挑战是我只需要设置一个 Org 并且我需要附加到现有的 rawdata。我知道可以通过减少使用流的行数轻松完成。
完整代码如下
public class Main {
public static void main(String[] args) {
List<Emp> empList = Arrays.asList(
new Emp("x1","as2112","a"),
new Emp("x1","as2122","b"),
new Emp("x1","as2422","c"),
new Emp("x1","as2423","d"));
CombinedData combinedData = new CombinedData();
for(Emp emp:empList){
if(combinedData.getOrg()==null){
combinedData.setOrg(emp.getCompany());
}
combinedData.addToList(emp.getWorkLog());
if(combinedData.getRawData()!=null){
combinedData.setRawData(combinedData.getRawData()+emp.getData());
}
else{
combinedData.setRawData(emp.getData());
}
}
}
}
class Emp{
private String company;
private String workLog;
private String data;
public Emp(
String company,
String workLog,
String data) {
this.company = company;
this.workLog = workLog;
this.data = data;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getWorkLog() {
return workLog;
}
public void setWorkLog(String workLog) {
this.workLog = workLog;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
class CombinedData{
private String org;
private List<String> worklogList;
private String rawData;
public String getOrg() {
return org;
}
public void setOrg(String org) {
this.org = org;
}
public List<String> getWorklogList() {
return worklogList;
}
public void setWorklogList(List<String> worklogList) {
this.worklogList = worklogList;
}
public String getRawData() {
return rawData;
}
public void setRawData(String rawData) {
this.rawData = rawData;
}
public void addToList(String worklog){
this.worklogList.add(worklog);
}
}
解决方案
我知道可以通过减少使用流的行数轻松完成。
好吧,这不是真的。我只能建议您将方法添加到 CombinedData
void add(Emp emp) {
if(getOrg()==null){
setOrg(emp.getCompany());
}
addToList(emp.getWorkLog());
if(getRawData()!=null){
setRawData(getRawData()+emp.getData());
}
else{
setRawData(emp.getData());
}
}
然后将其应用于流
CombinedData combinedData = new CombinedData();
empList.forEach(combinedData::add);
推荐阅读
- c# - 在视觉 stdio 中安装 Square nuget pacge 时出现问题
- python - Python中的列表:具有特定长度的单词总和
- python - 在 Pandas 中使用 groupby 后如何拆分列中的值?
- tailwind-css - 如何在tailwindcss中实现带有徽章的数据列表
- node.js - 房地产项目在 MongoDB 中存储数据的最佳方式
- google-apps-script - Google表格–当A列中的单元格包含字符串时删除行
- mysql - 如何删除 WITH ROLLUP 获取的不必要值并添加 TOTAL?
- html - 如何使特定元素可滚动,而不是整个页面?
- laravel - laravel 有效载荷在生产中太大
- intershop - 如何解码 BASKET 表上的 COMPUTEDITEMS 字段