zoukankan      html  css  js  c++  java
  • list集合分批处理数据

    方法一
    
    package com.****.winUtliTest.BaiWan;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
    * 测试 百万数据 每次处理10w
    * @ClassName: test 
    * @Description: TODO
    * @author: 92649498
    * @date: 2019年12月12日 下午4:14:00 
    * Class explain:
    */
    public class test {
    public static void main(String[] args) {
    List<String> a = new ArrayList();//a的list 只是用来做计数
    List<String> a1 = new ArrayList();//a的list 只是用来做计数
    List b = new ArrayList();// 实际存储的数据
    a1.add("b");
    for (int i = 0; i < 100; i++) {
    System.out.println("a1"+a.size());
    a.add(i, a1.get(0)+i);
    }
    
    
    
    
    
    for (int i = 1; i < a.size() + 1; i++) {
    b.add(a.get(i - 1));
    if (i % 10 == 0) {//每次每次处理
    System.out.println("每次处理100000W "+i + "-- 处理黑名单的数据" + b);
    
    b.clear();
    }
    
    if (i == a.size()) {
    System.out.println(i + "--" + b);
    // 最后一批
    b.clear();
    }
    
    }
    }
    
    
    
    
    
    }
    
     方法二
    
    package com.****.winUtliTest.BaiWan;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
    * 批次处理 百万数据 
    * @ClassName: test2 
    * @Description: TODO
    * @author: 92649498
    * @date: 2019年12月14日 下午11:05:21 
    * Class explain:
    */
    public class test2 {
    public static void main(String[] args) {
    List<Object> list = new ArrayList<Object>();
    for(int i = 0;i<500;i++){
    list.add(i);
    }
    test2.test1(list);
    }
    public static void test1(List<Object> dataList){
    int pointDataLimit = 100; //每次处理多少?条
    List<Object> newList = new ArrayList<Object>();
    for (int i=0;i<dataList.size();i++){
    //分批次处理
    newList.add(dataList.get(i));
    
    if(pointDataLimit == newList.size()||i == dataList.size()-1){
    printList(newList);
    newList.clear();
    System.out.println("*");
    System.out.println("====");
    }
    }
    }
    public static void printList(List<Object> dataList){
    for(Object str : dataList){
    System.out.print(str + "--");
    }
    }
    }
    
                          方法三
    
    package com.****.winUtliTest.BaiWan;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.log4j.Logger;
    
    import com.****.common.ConnectionPool;
    import com.****.service.getBlackListService;
    
    public class test3 {
    
    public static void main(String[] args) {
    HashMap<String, String> returnMap =new HashMap<String, String>();
    
    List<String> lines = new ArrayList<String>();//黑名单增量源数据
    //2019年12月13日 改版黑名单名 每次处理 10W 如果不到 10w 直接处理
    //只有文件总条数小于100W 才会写入 缓存 2019年12月9日
    try {
    lines = FileUtils.readLines(new File("D:\WindowsETC\ETC_Managent\blackListFile\ETCPMC-U-H-191214-06-11"), Charset.forName("GBK"));//将文件 写入缓存
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally {
    //    logger.info("[黑名单下载服务 :] 删除文件");
    //    Boolean delDirUtil2 = winZipUtil.delDirUtil(blackListFilePath, blackListFilePath1,
    //    blackListFilePath2);
    // 筛选是增加还是删除
    System.out.println("[黑名单下载服务 :] 开始处理数据一共=" + (lines.size() - 1) + "=" + lines.get(0));
    //如果增量黑名单数据超过 10W 每次处理 10W
    int pointDataLimit = 100000; //每次处理多少?条
    List<String> newList = new ArrayList<String>();
    for (int i=0;i<lines.size();i++){
    //分批次处理
    newList.add(lines.get(i));
    if(pointDataLimit == newList.size()||i == lines.size()-1){
    for (String string : newList) {
    if (string.contains("D")) {
    String replaceAll = string.replaceAll("D","");
    rwFile(replaceAll+"--");
    System.out.print(replaceAll+"--");
    }
    if (string.contains("A")) {
    String replaceAll = string.replaceAll("A","");
    rwFile2(replaceAll+"--");
    System.out.print(replaceAll+"--");
    }
    }
    newList.clear();
    rwFile("*");
    rwFile("====");
    System.out.println("*");
    System.out.println("====");
    }
    }
    
    
    
    }
    
    }
    
    
    public static void rwFile(String string){
    FileWriter fw = null;
    try {
    fw = new FileWriter("C:\Users\92649498\Desktop\1111.txt", true);//路径一定要用"\"
    fw.write(string);//这里向文件中输入结果123
    fw.flush();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (fw != null) {
    try {
    fw.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    
    public static void rwFile2(String string){
    FileWriter fw = null;
    try {
    fw = new FileWriter("C:\Users\92649498\Desktop\2222.txt", true);//路径一定要用"\"
    fw.write(string);//这里向文件中输入结果123
    fw.flush();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (fw != null) {
    try {
    fw.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    }
    只限阅读,未经允许不得转载,如有问题请@本人,如我方内容侵权请及时告知我方。
  • 相关阅读:
    一步步打造QQ群发消息群发器
    正确理解IEnumerable和IQueryable两接口的区别
    分享破解公众号裂变涨粉工具、吸粉方案。
    快40岁了,我还要不要继续写代码呢?
    精准营销、批量提取QQ群成员号码
    分享一个公众号h5裂变吸粉源码工具
    C#(.NET) HMAC SHA256实现
    mybatis的<if>标签,<foreach>标签,<collection>标签,<association>标签以及useGeneratedKeys用法
    springBoot解决跨域问题
    springBoot实现文件上传与下载
  • 原文地址:https://www.cnblogs.com/wzy-525/p/12059512.html
Copyright © 2011-2022 走看看