我正在使用 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
提交
取消