亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較 2 個文本文件并找出列表中的差異并找出哪些列表值不匹配

比較 2 個文本文件并找出列表中的差異并找出哪些列表值不匹配

白衣染霜花 2023-05-24 16:11:58
我正在使用 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 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

遍歷resultList檢查以查看當前項目是否也在prodRecordsFromStatement.

如果是,則來自文件 1,否則來自文件 2。


查看完整回答
反對 回復 2023-05-24
?
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 中的所有行。


查看完整回答
反對 回復 2023-05-24
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號