抱歉:我很好,菜鸟
我有一个项目类
class item(ind:Int,freq:Int,gap:Int){}
我有一个有序的整数列表
val listVar = a.toList
其中 a 是一个数组
我想要一个称为指标的项目列表,其中
ind 是(唯一)整数
频率是结尾出现在列表中的次数
间隙是 ind 与其前面的列表中的数字之间的最小间隙
到目前为止我有:
def metrics = for {
n <- 0 until 255
listVar filter (x == n) count > 0
}
yield new item(n, (listVar filter == n).count,0)
这是一派胡言,我知道——有什么线索吗?
嗯,其中一些很简单:
val freqMap = listVar groupBy identity mapValues (_.size)
这给你ind
and freq
。要得到gap
我会使用折叠:
val gapMap = listVar.sliding(2).foldLeft(Map[Int, Int]()) {
case (map, List(prev, ind)) =>
map + (ind -> (map.getOrElse(ind, Int.MaxValue) min ind - prev))
}
现在你只需要统一它们:
freqMap.keys.map( k => new item(k, freqMap(k), gapMap.getOrElse(k, 0)) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)