2013-05-28 33 views
0

我有3個數組,每個元素都是Sortable的子類,它有一個帶有「index」的getter,一個正數表示排序順序。Concat和排序n預排序陣列效率最高

數組中的2個按升序排序,而第三個數組未排序。最終的數組也必須按升序排序。

如果您想要具體說明,第一個數組是等距網格中的建築物,第二個數組是由道具構成的,例如樹木。第三個(未排序)充滿了「演員」,他們經常移動並改變他們的索引。

我已經考慮將所有的東西放在同一個數組中,只是對該數組進行排序,但其基本上就像呆滯。我已經嘗試了數組的本地排序和sortOn,但它仍然很慢(約2毫秒的2 concat和排序在最後的數組)。這真的太多了,我希望它至少減半,但它會更好一個更優雅的解決方案(我相信我的吸吮)。

我不能使用矢量,因爲我無法將Vector中的3個子類合併在一起..我知道它應該可以工作,但它不會。

回答

0

首先,Vector.<Sortable>也會爲子類做。其次,你爲什麼不把建築物和樹木放在一個陣列中,演員放在另一個陣列中,然後分兩個階段 - 第一個演員,然後合併。

+0

子類不工作,我試過了。道具數組包含許多粒子(用於冒煙等),並以分類狀態重新創建。 actor數組包含相同的元素數,但其索引更改。建築物的數量或指標沒有變化(通常,它們會從用戶交互中改變)。 – Discipol

+0

奇怪的是,我剛剛嘗試過'矢量。 '並添加了擴展Sprite的類的不同實例。也許你需要更加努力,或者修改你的類結構來驗證你所有的類都是'Sortable'的子類,或者在接口的情況下,所有的類在聲明中都有'Sort Sortable'。 – Vesper