是否需要從頭開始提供實現?我找不到任何匹配的隱含的,即使在最後的手段Implicits特質。 seqDerivedOrdering
顯然不起作用,因爲Array
不是Seq
。如何定義Ordering [Array [Byte]]?
6
A
回答
2
您可以實現一個非常簡單的Ordering
,它在共映射陣列上調用toSeq
,然後調用seqDerivedOrdering
。就性能而言,轉換爲Seq應該幾乎是免費的。
8
如果你希望它是有效的,你必須編寫自己的(這個處理空值;如果你可以假設沒有空,只使用長else塊):
val o = new math.Ordering[Array[Byte]] {
def compare(a: Array[Byte], b: Array[Byte]): Int = {
if (a eq null) {
if (b eq null) 0
else -1
}
else if (b eq null) 1
else {
val L = math.min(a.length, b.length)
var i = 0
while (i < L) {
if (a(i) < b(i)) return -1
else if (b(i) < a(i)) return 1
i += 1
}
if (L < b.length) -1
else if (L < a.length) 1
else 0
}
}
}
否則,您可以將.toSeq
打包到WrappedArray
,並推遲到Seq比較,而不是進行自己的掃描。 (這會結束裝箱和解開你的字節,這就是爲什麼它效率不高的原因。由於字節裝箱通常是通過在所有字節的表格中查找來完成的,所以它不是很糟糕,所以你可能能夠避開它除非你做如重型二進制文件處理)
7
如果你到簡潔,而不是原始性能:
scala> Ordering.by((_: Array[Byte]).toIterable)
res0: scala.math.Ordering[Array[Byte]] = [email protected]
相關問題
- 1. 如何在C++中聲明byte *(byte array)?
- 2. scala Array [Byte] diff
- 3. Picture VS Byte Array?
- 4. Java Parse Json Byte Array
- 5. Uuencoded image to byte array
- 6. Byte array java xml serialization
- 7. Java(BigInteger from byte array)
- 8. 我需要將org.apache.spark.rdd.RDD [Array [Byte]]轉換爲Spark Streaming中的Array [Byte]
- 9. c#int [] array to byte [] array只有LSB
- 10. Byte Array to Float Conversion C#
- 11. vbscript serialize integer to byte array
- 12. Byte Array to Uint64 as a String
- 13. java byte array memory not released
- 14. Byte Array to Bitmap Image android
- 15. protobuf-net Byte Array上的OverwriteList
- 16. Array未定義
- 17. 類Array定義
- 18. Ordering @ Ordering and Ranking排列
- 19. Array <Vector2>如何定義它?
- 20. 從InputStream作爲Iterator [Byte]或Array [Byte]讀取
- 21. 在javascript中定義byte arrray
- 22. .Net C#to PHP Pb byte [] array&ComputeHash
- 23. PlayFramework:值不是Array的成員[Byte]
- 24. 在VB.Net中將MemoryStream轉換爲Byte Array
- 25. Dense_Rank ordering
- 26. Array [Byte] Spark RDD to String Spark RDD
- 27. 如何獲得數組類的類定義byte []?
- 28. Spring bean定義:String array ArrayList
- 29. nameerror:未定義名稱'array'
- 30. Java Array自定義函數
是的,我想添加這樣的事情,但要問了。也許有必要添加一些東西到stdlib,使其更明顯? – venechka
@venechka - 如果'Array'對象爲每種類型實現了這些將會很好。也許有人應該提交增強請求?但與此同時,標準庫沒有一些便利的東西。你應該習慣於擁有你自己的個人標準庫來填寫你需要的部分! –
這足以讓我想到一個@specialized版本。 – venechka