我可以合并具有10和10个元素的两个列表,并从这两个列表中创建新列表,这两个列表是这两个列表中的前10个

时间:2014-10-03 18:15:52

标签: scala

  1. 我有以下列表,这些是窗口列表 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相同的索引元素 相互关联。

1 个答案:

答案 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)。

然后,您将获得三个不同的列表,其中前十个按不同的标准从每个列表中获取。如果您只想要一个列表,则需要决定如何权衡不同的功能。

注意 - sortedsortBy从最低到最高排序。如果您想要反过来,请使用reverse或对数量的负数进行排序(例如sortBy(- _.cpu))。