我有以下列表,这些是窗口列表 cpu,内存,主机cpuWin = [10,20,30,40,550,60,70,80,100,30] MemoryWin = [23,34,32,45,56,66,55,43,66,76] hostWin = [10,20,30,40,550,60,70,80,100,30]
这些是linux cpu,内存,主机cpuLin =的列表 [10,20,30,40,550,60,70,80,100,30] memoryLin = [23,45,67,78,39,48,57,20,10,30] hostLin = [10,20,30,40,550,60,70,80,100,30]
现在我必须合并这些相应的Windows和cpus列表 linux,相应的windows和linux和memorys列表 相应的Windows和Linux主机列表如下.... 现在在cpuWin有10个元素,cpuLin有10个元素......我有 对这两个列表进行排序,找到这两个列表之间的前10位 同样来自内存和主机,但我必须排序并找到前10名 但索引不应该是错误的becoz相同的索引元素 相互关联。
答案 0 :(得分:1)
我很想告诉你只使用像
这样的数据结构case class Resources(cpu: Int, mem: Int, host: Int, os: String) {}
并将所有内容放入一个列表中,然后masterList.sortBy(_.cpu).takeRight(10)
。
但如果你真的想用指数做事,你可以。例如,
(0 until 20).sortBy(i => if (i<10) cpuWin(i) else cpuLin(i-10))
将为您提供已排序索引的列表(您必须记住,10到19指的是Linux)。
然后,您将获得三个不同的列表,其中前十个按不同的标准从每个列表中获取。如果您只想要一个列表,则需要决定如何权衡不同的功能。
注意 - sorted
和sortBy
从最低到最高排序。如果您想要反过来,请使用reverse
或对数量的负数进行排序(例如sortBy(- _.cpu)
)。