在游戏中,我需要保持选项卡中我正在使用哪些池中的精灵。当“主动”多个精灵一次我想从我的passivePool
转移到activePool
这两个都是不可变的HashSets(好吧,我会创建新的集合,每次确切)。所以我的基本思路是沿着线:在Scala中将实例从Set移动到另一个
activePool ++= passivePool.take(5)
passivePool = passivePool.drop(5)
但阅读斯卡拉文档我猜,我拿5可能会有所不同的是,5我再落。这绝对不是我想要的。我也可以这样说:
val moved = passivePool.take(5)
activePool ++= moved
passivePool --= moved
,但因为这是我需要做实时几乎每帧一个有限的设备(Android手机),我想这将是我将不得不寻找更慢上从passivePool
一个接一个地每个moved
精灵。
任何聪明的解决方案?或者我错过了一些基本的东西?记住效率是这里主要关心的问题。我无法使用列表而不是集合,因为当游戏中的精灵被破坏时,我还需要从activePools中随机访问精灵。
1.为什么你认为第一个版本比第二个版本更有效率?我建议为你的问题使用可变映射。这只是一种感觉。 – ziggystar