【发布时间】:2019-04-30 10:52:20
【问题描述】:
我有以下函数处理一系列搜索事件,如果它们相关,这些事件需要在搜索流中组合在一起。
def split(eventsIterator: Iterator[SearchFlowSearchEvent]): Iterator[SearchFlow] = {
val sortedEventsIterator = eventsIterator.toList.sortBy(_.evTimeMillis).iterator
val searchFlowsEvents: mutable.MutableList[mutable.MutableList[SearchFlowSearchEvent]] = mutable.MutableList()
var currentSearchFlowEvents: mutable.MutableList[SearchFlowSearchEvent] = mutable.MutableList()
var previousEvent: SearchFlowSearchEvent = null
while (sortedEventsIterator.hasNext) {
val currentEvent = sortedEventsIterator.next()
if (isSameFlow(previousEvent, currentEvent)) {
currentSearchFlowEvents += currentEvent
} else {
currentSearchFlowEvents = mutable.MutableList()
currentSearchFlowEvents += currentEvent
searchFlowsEvents += currentSearchFlowEvents
}
previousEvent = currentEvent
}
searchFlowsEvents
.map(searchFlowEvents => model.SearchFlow(searchFlowEvents.toList))
.iterator
}
执行上面列出的事件分组的方法是迭代的(我来自 Java 世界)。
任何人都可以提供一些关于如何以功能方式实现相同结果的提示吗?
【问题讨论】:
标签: scala functional-programming