我正在使用 Scanner 讀取 2 個文本文件(可能包含重復項)并將它們寫入 arraylist。我正在比較兩個 arraylist 以找出差異。當我打印出來時,我可以看到有什么區別,但我不知道哪個記錄來自哪個文件(文本文件名)text1.txt 中的內容TIMESTAMP,FE,TDI,20190703113119,20190601000000,20190701000000,TIMESTAMP,FE,KYMI,20190703113130,20190601000000,20190701000000,TIMESTAMP,FE,UMRI,20190703113154,20190601000000,20190701000000,TIMESTAMP,FE,MLI,20190703113211,20190601000000,20190701000000,TIMESTAMP,FE,WOLI,20190703113221,20190601000000,20190701000000,TIMESTAMP,FE,VEM,20190703113221,20190601000000,20190701000000,TIMESTAMP,FE,ZER,20190703113154,20190601000000,20190701000000,text2.txt 中的內容TIMESTAMP,FE,TDL,20190703113119,20190601000000,20190701000000,TIMESTAMP,FE,KYMA,20190703113130,20190601000000,20190701000000,TIMESTAMP,FE,UMRC,20190703113154,20190601000000,20190701000000,TIMESTAMP,FE,MLW,20190703113211,20190601000000,20190701000000,TIMESTAMP,FE,WOLF,20190703113221,20190601000000,20190701000000,TIMESTAMP,FE,VEM,20190703113221,20190601000000,20190701000000,TIMESTAMP,FE,ZER,20190703113154,20190601000000,20190701000000,代碼:Scanner prodScanner = new Scanner(prodFile); while (prodScanner.hasNextLine()) { String currentRecord = prodScanner.nextLine().trim(); if (currentRecord.length() > 0) { prodRecordsFromStatement.add(currentRecord); } }Scanner nonProdScanner = new Scanner(nonProdFile);while (nonProdScanner.hasNextLine()) { String currentRecord = nonProdScanner.nextLine().trim(); if (currentRecord.length() > 0) { nonProdRecordsFromStatement.add(currentRecord); } }Collection<String> result = new ArrayList<>(CollectionUtils.disjunction(prodRecordsFromStatement, nonProdRecordsFromStatement)); List<String> resultList = new ArrayList<>(result); Collections.sort(resultList);
2 回答

HUH函數
TA貢獻1836條經驗 獲得超4個贊
您的解決方案需要具備怎樣的性能?如果性能不是非常關鍵,并且您的列表不長,那么您可以改用 usingsubtract
而不是 disjunction。
例如
Collection<String> resultProdRecords = new ArrayList<>(CollectionUtils.subtract(prodRecordsFromStatement, nonProdRecordsFromStatement)); Collection<String> resultNonProdRecords = new ArrayList<>(CollectionUtils.subtract(prodRecordsFromStatement, nonProdRecordsFromStatement));
resultProdRecords
將包含 prodRecordsFromStatement 中不在 nonProdRecordFromStatement 中的所有行。
resultNonProdRecords
將包含 nonProdRecordFromStatement 中不在 prodRecordsFromStatement 中的所有行。
添加回答
舉報
0/150
提交
取消