List中1-10,11-20,21-30...每10条取出并重新赋值后修改到原数据

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("[email protected]");

            } else if (i >= 71 && i <= 80) {               //71-80 userName相等
                landModel.setUserName("[email protected]");

            } else if (i >= 101 && i <= 110) {              //101-110 userName相等
                landModel.setUserName("[email protected]");

            } 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);


    }
}

发布了257 篇原创文章 · 获赞 136 · 访问量 107万+

猜你喜欢

转载自blog.csdn.net/wds1181977/article/details/95079743