gpt4 book ai didi

java - 比较 2 个数组并删除重复项? java

转载 作者:行者123 更新时间:2023-11-29 07:07:50 26 4
gpt4 key购买 nike

所以我试图比较 java 中的 2 个巨大的文本列表。文本可能看起来像这样:

list1 : 值 1 , 值 2 , 值 3 ...list2 : 值 1604 , 值 7000 , 值 1 ...

关键是我喜欢比较列表 1 和列表 2 中的每一行(每个值都在自己的行中)并从列表 2 中删除重复项并将 ARRAY 3 写入文件。这就是我得到的:

编辑:

    File haveFile = new File("Combine Without Dups.txt");
BufferedReader br = null;
br = new BufferedReader(new FileReader(haveFile));
String line ;
String list = null ;

while ((line = br.readLine()) != null) {

list = line ;

}

File compareFile = new File("database.txt");
BufferedReader br2 = null;
br2 = new BufferedReader(new FileReader(compareFile));
String line2 ;
String list2 = null ;

while ((line2 = br2.readLine()) != null) {

list2 = line2 ;

list2.removeAll(list);

最佳答案

将第一个文件中的所有行读入 Set<String> (不是 List ),与第二个文件类似。例如使用 LinkedHashSet s(保留插入顺序)。

然后做:

// set2 contains lines in second file, set1 in first file
set2.removeAll(set1);

然后写入set2的内容到结果文件中。

请注意,这假设没有重复值。

如果你用Guava,你也可以用 Sets.difference() 计算集合之间的差异, Files.readLines() 直接从文件中读取行(注意,这不是 Java 7 的 Files——如果你确实使用 Java 7,你可以使用 Files.readAllLines() ——然后将 File 扔出窗口以备不时之需)


使用 Java 7 的完整代码:

final Path path1 = Paths.get("/path/to/file1");
final Path path2 = Paths.get("/path/to/file2");
final Path outfile = Paths.get("/path/to/outfile");

final List<String> list1 = Files.readAllLines(path1, StandardCharsets.UTF_8);
final List<String> list2 = Files.readAllLines(path2, StandardCharsets.UTF_8);

list2.removeAll(list1);

Files.write(outfile, list2, StandardCharsets.UTF_8);

关于java - 比较 2 个数组并删除重复项? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17740551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com