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