How to split a list by another list in Scala

后端 未结 3 1592
清酒与你
清酒与你 2021-01-16 06:10

I am new to Scala and I need a solution to my problem. Imagine I have these lists:

val list1 = List(1,2,3,4,5,6,7,8,9,10,11)
val list2 = List(6,5)

3条回答
  •  日久生厌
    2021-01-16 06:47

    def foo[A](xs: List[A], ys: List[Int]): List[List[A]] = {
      val (result, _) = ys.foldLeft((List.empty[List[A]], xs)) { case ((acc, remaining), i) =>
        (remaining.take(i) :: acc, remaining.drop(i))
      }
    
      result.reverse
    }
    
    test("1") {
      val list1 = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
      val list2 = List(6, 5)
      val result = List(List(1, 2, 3, 4, 5, 6), List(7, 8, 9, 10, 11))
    
      foo(list1, list2) shouldBe result
    }
    
    test("2") {
      val list1 = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
      val list2 = List(4, 4, 3)
      val result = List(List(1, 2, 3, 4), List(5, 6, 7, 8), List(9, 10, 11))
    
      foo(list1, list2) shouldBe result
    }
    

提交回复
热议问题