方法一 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(); } } } } }