在scala中逐行比较两个文件

时间:2015-07-14 20:26:15

标签: file scala compare

我有2个文件, 文件1:

1
2
2
2
1
1
2
1
...

和file2:

1=1
2=2
0!=2
2=2
...

我如何逐行比较这两个文件?我想计算具有相同值的行。例如,在上面两个文件中:

 def main(args: Array[String]): Unit = {
    val lines = fromFile("data/file1.txt").getLines
    val lines2 = fromFile("data/file2.txt").getLines
    var l = 0
    var cnt = 0
    for (line <- lines) {
      for (line2<-lines2){

        if (line == line2){
          cnt += 1
        }
      }

      println(cnt)

    }
  }

我试过了:

using System.Collections;

但我没有显示我最喜欢的输出。

2 个答案:

答案 0 :(得分:4)

您正在嵌套迭代,即您将第一个文件的第1行与第二个文件的所有行进行比较,然后将第一个文件的第2行与第二个文件的所有行进行比较...甚至没有因为getLines给你一个迭代器,它将在第一个循环后耗尽。

最简单的是

(lines1 zip lines2).count { case (a, b) => a == b }

答案 1 :(得分:0)

您可以使用转换为数组并进行比较

lines1.toArray.sameElements(lines2.toArray)

它将返回布尔值。