List中1-10,11-20,21-30…每10条取出并重新赋值后修改到原数据
需求
有1000条数据,每10条数据取出满足10条用户名一样就取出,并赋值一字段,然后合并到原始数据,必须满足1-10,11-20,21-30,这种
package com.sdbz.dbank;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ProjectName: DBank
* @Package: com.sdbz.dbank
* @ClassName: LandModel
* @Description: java类作用描述
* @Author: wds
* @CreateDate: 2019-07-07 11:31
* @UpdateUser: 更新者:
* @UpdateDate: 2019-07-07 11:31
* @UpdateRemark: 更新说明:
* @Version: 1.0
*/
public class LandModel {
String id;
String userName;
boolean isRed = false;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public boolean isRed() {
return isRed;
}
public void setRed(boolean red) {
isRed = red;
}
public static void main(String[] arg) {
List<LandModel> list = new ArrayList<>(); //原始数据
for (int i = 1; i <= 1000; i++) {
LandModel landModel = new LandModel();
if (i >= 51 && i <= 60) { //51-60 userName相等
landModel.setUserName("wds1181977@qq.com");
} else if (i >= 71 && i <= 80) { //71-80 userName相等
landModel.setUserName("ab03@qq.com");
} else if (i >= 101 && i <= 110) { //101-110 userName相等
landModel.setUserName("wab05@qq.com");
} else {
landModel.setUserName("ab" + i);
}
landModel.setId(i + "ab");
landModel.setRed(false);
list.add(landModel);
}
list.forEach(landModel -> {
System.out.println("打印原始数据userName:"+landModel.getUserName());
});
int listSize = list.size();
int toIndex = 10;
List<LandModel> allList = new ArrayList<>();//符合1-10 11-20...的连号的放在这个集合中
for (int i = 0; i < list.size(); i += 10) {
if (i + 10 > listSize) { //作用为toIndex最后没有1000条数据则剩余几条newList中就装几条
toIndex = listSize - i;
}
List<LandModel> newList = list.subList(i, i + toIndex);//截取区间List
String userName1 = newList.get(0).getUserName(); //取出第一条
newList = newList.stream().filter(landModel -> landModel.getUserName().equals(userName1)).collect(Collectors.toList());
if (newList.size() == 10) {//过滤UserName 相等 值且是10条,符合连号规则
allList.addAll(newList);
}
}
allList.forEach(landModel -> {
System.out.println("打印所有连号的:"+landModel.getUserName());
});
//给原始数据赋值为setRed
allList.forEach(landModel -> {
list.forEach(l->{
if(landModel.getId().equals(l.getId())){
l.setRed(true);
}
});
});
long s=list.stream().filter(l->l.isRed==true).count();
System.out.println("验证修改结果:"+s);
}
}