列表在Scala中是不可变的,因此我试图弄清楚如何“删除”(实际上是创建一个新集合)该元素,然后缩小在列表中创建的间隔。在我看来,这将是一个使用地图的好地方,但我不知道如何开始使用此地图。

课程是一个字符串列表。我需要这个循环,因为我实际上有几个列表,我需要从中删除该索引处的元素(我使用多个列表来存储跨列表关联的数据,而我这样做是通过简单地确保索引始终对应于列表)。

  for (i <- 0 until courses.length){
    if (input == courses(i) {
    //I need a map call on each list here to remove that element
    //this element is not guaranteed to be at the front or the end of the list
    }
  }
}


让我为这个问题添加一些细节。我有四个通过索引相互关联的列表。一个列表存储课程名称,一个列表以简单的int格式(即130)存储课程开始的时间,一个列表存储“ am”或“ pm”,或者以int存储课程的日期(因此“ MWF”等于1,“ TR”等于2,依此类推。我不知道这是解决这个问题的最佳方法还是“正确”的方法,但是这些都是我所拥有的工具(自从16岁以来就没有认真编程过的一年级计算机科学专业学生)。我正在编写一个从每个列表中删除相应元素的函数,我所知道的是1)索引相对应,2)用户输入课程名称。如何使用filterNot从每个列表中删除相应的元素?我认为我对每个列表都不了解,无法对它们使用高阶函数。

最佳答案

这是filter的用例:

scala> List(1,2,3,4,5)
res0: List[Int] = List(1, 2, 3, 4, 5)

scala> res0.filter(_ != 2)
res1: List[Int] = List(1, 3, 4, 5)


转换列表的所有元素时,要使用map。

07-28 01:57
查看更多