3 回答
TA贡献1828条经验 获得超13个赞
将第一个文件加载到 List<String> 用户中。
将第二个文件加载到 List<String> users2 中。
使用 apache 公共集合
CollectionUtils.removeAll(Collection<E> users, Collection<?> users2)
这仅在文件大小可以加载到内存中时才有效。否则,它需要另一种方法,例如使用命令行命令对两个文件进行排序
sort
,并逐行浏览两个文件并决定是否写入输出。
TA贡献1852条经验 获得超7个赞
您可以使用 BeyondCompare 来比较两个 csvs。它将明确识别丢失的用户以及其他不匹配的数据(如果有)。如果您想以编程方式执行此操作,则可以在将 csv 复制到 bean 列表/映射后创建一个用户 bean(并重写 equals 方法来比较用户名或任何其他您想要的)。
TA贡献1906条经验 获得超10个赞
我看到的最好的方式,
1)使用Java NIO Api(实际上非常快)分别读取两个文件并将它们存储到列表中。
Path path = Paths.get("src/main/resources/shakespeare.txt");
try {
Files.lines(path).forEach(System.out::println);//print each line
} catch (IOException ex) {
ex.printStackTrace();//handle exception here
}
2) 使用 java 8 预测器比较两个列表。
public static List < String > filterAndGetEmployees(List < String> employees,
Predicate < String > predicate) {
return list.stream().filter(predicate).collect(Collectors. < String > toList());
}
3)如果你想再次写文件,你可以去,
Path path = Paths.get("src/main/resources/shakespeare.txt");
try(BufferedWriter writer = Files.newBufferedWriter(path, Charset.forName("UTF-8"))){
writer.write("To be, or not to be. That is the question.");
}catch(IOException ex){
ex.printStackTrace();
}
希望对你有帮助..
添加回答
举报