Có cần thiết phải cung cấp việc triển khai từ đầu không? Tôi không thể tìm thấy bất kỳ ngụ ý nào phù hợp, thậm chí không phải ở đặc điểm cuối cùng của Implicits. seqDerivedOrdering
rõ ràng là không làm việc, kể từ Array
không phải là một Seq
.Cách xác định Thứ tự [Array [Byte]]?
Trả lời
Bạn có thể triển khai Ordering
rất đơn giản gọi toSeq
trên mảng comapred và gọi số seqDerivedOrdering
. Việc chuyển đổi sang một Seq sẽ gần như miễn phí về mặt biểu diễn.
Nếu bạn muốn nó được hiệu quả, bạn sẽ phải viết riêng của bạn (cái này xử lý null, nếu bạn có thể giả định không null, chỉ cần sử dụng các khối khác dài):
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
}
}
}
Nếu không, bạn có thể .toSeq
để đóng gói thành một WrappedArray
và trì hoãn đến một Seq so sánh thay vì làm quét của riêng bạn. (Điều này sẽ kết thúc boxing và unboxing byte của bạn, đó là lý do tại sao nó không hiệu quả. Kể từ byte đấm bốc thường thực hiện bằng cách tra cứu trong một bảng của tất cả các byte, nó không phải khủng khiếp inefficent, vì vậy bạn có thể nhận được ngay với nó trừ khi bạn đang làm ví dụ nặng xử lý tập tin nhị phân)
Nếu bạn đang vào ngắn gọn hơn là hiệu suất thô:.
scala> Ordering.by((_: Array[Byte]).toIterable)
res0: scala.math.Ordering[Array[Byte]] = [email protected]
- 1. xác định xem mảng byte chứa byte theo một thứ tự cụ thể
- 2. Cách xác định Thứ tự trong Scala?
- 3. Thứ tự xác định loại
- 4. Thứ tự truy xuất Danh sách Array
- 5. Chuyển đổi Byte Array thành bit Array?
- 6. Xác định thứ tự của danh sách
- 7. Cách xác định thứ tự của XmlAttributes, sử dụng XmlSerializer
- 8. Byte Array vào NSData
- 9. Byte Array trong Python
- 10. Xóa Dấu thứ tự byte khỏi Tệp.ReadAllBytes (byte [])
- 11. Đang tải Assembly Byte Array
- 12. Phương thức IPAddress.GetAddressBytes() - thứ tự byte nào?
- 13. Scala: InputStream to Array [Byte]
- 14. Overotobuf-net OverwriteList trên Byte Array
- 15. Xác định Array và phím theo một cách đen - C#
- 16. Xác định thứ tự tệp cho ImageMagick chuyển đổi
- 17. PixelFormat.Format32bppArgb dường như có thứ tự byte sai
- 18. enum.values () - là một thứ tự enums trở xác định
- 19. TSQL - Có thể xác định thứ tự sắp xếp không?
- 20. Xác định thứ tự khởi tạo của lớp WebActivator.PreApplicationStartMethod
- 21. Loại từ điển có thứ tự khóa được xác định
- 22. sắp xếp lại thứ tự byte trong chuỗi hex (python)
- 23. Java Byte Array conversion Số phát hành
- 24. Lưu Byte Array UNC Đường dẫn
- 25. Byte Array để chuyển đổi hình ảnh
- 26. Tại sao Guid.ToString() đảo ngược thứ tự byte?
- 27. Chuyển đổi UIImage sang Byte Array
- 28. Chuyển đổi Byte Array thành Bitset
- 29. Java Iterate Bits trong Byte Array
- 30. byte-array là bitfield trong C#?
Vâng, tôi muốn thêm một cái gì đó như thế này, nhưng muốn hỏi trước đó. Có lẽ nó có ý nghĩa để thêm một cái gì đó để stdlib để làm cho nó rõ ràng hơn? – venechka
@venechka - Sẽ tốt hơn nếu đối tượng 'Array' triển khai các đối tượng này cho từng loại. Có lẽ ai đó nên gửi yêu cầu nâng cao? Trong khi chờ đợi, mặc dù, có _lots_ những thứ tiện dụng mà thư viện chuẩn không có. Bạn nên quen với việc có thư viện chuẩn cá nhân của riêng bạn để điền vào những phần mà bạn cần! –
nó là đủ để có một phiên bản @specialized duy nhất tôi nghĩ. – venechka