Let be
val aList = List(Person(1), Invite(2), Invite(3), Person(2), Invite(4), Person(3), Invite(6), Invite(7))
Then index each place in the list and select Personinstances,
val persons = (aList zip Stream.from(0)).filter {_._1.isInstanceOf[Person]}
, List((Person(1),0), (Person(2),3), (Person(3),5)). , Person,
val intervals = persons.map{_._2}.sliding(2,1).toArray
res31: Array[List[Int]] = Array(List(0, 3), List(3, 5))
,
val latest = aList.drop(intervals.last.last)
val associations = intervals.map { case List(pa,pb,_*) => b.slice(pa,pb) } ++ latest
,
Array(List(Person(1), Invite(2), Invite(3)), List(Person(2), Invite(4)), List(Person(3), Invite(6), Invite(7)))
,
associations.map { a =>
val person = a.take(1)
val invitees = a.drop(1)
}
.