【问题标题】:Compare two files line by line in scala在scala中逐行比较两个文件
【发布时间】:2015-07-14 20:26:14
【问题描述】:

我有 2 个文件, 文件1:

1
2
0
2
1
2
3
2
...

和文件2:

1
2
2
2
1
1
2
1
...

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

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)

    }
  }

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

【问题讨论】:

    标签: file scala compare


    【解决方案1】:

    您正在嵌套迭代,即您将第一个文件的第 1 行与第二个文件的 all 行进行比较,然后将第一个文件的第 2 行与第二个文件的所有行进行比较……甚至没有那是因为getLines 为您提供了一个迭代器,该迭代器将在第一个循环后耗尽。

    最简单的应该是

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

    【讨论】:

      【解决方案2】:

      您可以使用转换为数组并比较它们

      lines1.toArray.sameElements(lines2.toArray)
      

      它将返回布尔值。

      【讨论】:

        猜你喜欢
        • 2015-12-02
        • 2018-04-17
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 2021-04-27
        相关资源
        最近更新 更多