比较2个数组并删除重复数据? Java的

时间:2013-07-19 07:35:57

标签: java arrays compare

所以我试图在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);

3 个答案:

答案 0 :(得分:6)

将第一个文件中的所有行读入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的{{1} } - 如果您使用Java 7,则可以使用Files.readAllLines() - 并将Files抛出窗口以获得良好的衡量标准)


使用Java 7的完整代码:

File

答案 1 :(得分:0)

如果你的意思是组合list1 + list2然后删除重复项 使用普通的Set集合,因为它不包含重复项,当你添加值时它会自动删除dpulicates,

答案 2 :(得分:0)

1.将2个文件读入2个ArrayList 2.为循环创建2,其中一个在另一个循环内。第一个循环应该在第一个列表上迭代,第二个循环应该在第二个列表中迭代。 3.比较列表1和列表2的每个值。如果任何相等的值将其删除。