ann*_*nno 1 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);
Run Code Online (Sandbox Code Playgroud)
将第一个文件中的所有行读入Set<String>(不是a List),类似于第二个文件.例如,使用LinkedHashSets(保留插入顺序).
然后做:
// set2 contains lines in second file, set1 in first file
set2.removeAll(set1);
Run Code Online (Sandbox Code Playgroud)
然后将内容写入set2结果文件.
请注意,这假设没有重复的值.
如果您使用的番石榴,您还可以使用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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2974 次 |
| 最近记录: |