讓
然後索引的每個位置在列表中,選擇Person
情況下,
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) // last Person and Invitees not paired
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)
// ...
}
這種方法可能被視爲可變尺寸滑動。
來源
2014-02-15 00:24:02
elm
我不會把它列在一個列表中。使用地圖(人 - > Seq [邀請])或創建一個新的案例類別PI(p:Person,是:Seq [Invite])並具有列表[PI]。 –
感謝Rado。如果我不得不把它保存在一個列表中,並想要一個漂亮的內膽? :) – user2657794