Tại sao phiên bản bất biến của cửa hàng ListMap theo thứ tự tăng dần, trong khi các phiên bản có thể thay đổi theo thứ tự giảm dần?Tại sao ListMaps có thể thay đổi và không thay đổi có các đơn đặt hàng khác nhau trong Scala?
Dưới đây là một thử nghiệm mà bạn có thể sử dụng nếu bạn có scalatest-1.6.1.jar và junit-4.9.jar
@Test def StackoverflowQuestion()
{
val map = Map("A" -> 5, "B" -> 12, "C" -> 2, "D" -> 9, "E" -> 18)
val sortedIMMUTABLEMap = collection.immutable.ListMap[String, Int](map.toList.sortBy[Int](_._2): _*)
println("head : " + sortedIMMUTABLEMap.head._2)
println("last : " + sortedIMMUTABLEMap.last._2)
sortedIMMUTABLEMap.foreach(X => println(X))
assert(sortedIMMUTABLEMap.head._2 < sortedIMMUTABLEMap.last._2)
val sortedMUTABLEMap = collection.mutable.ListMap[String, Int](map.toList.sortBy[Int](_._2): _*)
println("head : " + sortedMUTABLEMap.head._2)
println("last : " + sortedMUTABLEMap.last._2)
sortedMUTABLEMap.foreach(X => println(X))
assert(sortedMUTABLEMap.head._2 > sortedMUTABLEMap.last._2)
}
Heres đầu ra của thử nghiệm qua:
head : 2
last : 18
(C,2)
(A,5)
(D,9)
(B,12)
(E,18)
head : 18
last : 2
(E,18)
(B,12)
(D,9)
(A,5)
(C,2)
một lợi thế lớn của một bộ sưu tập API tốt là nó bảo vệ bạn khỏi phải "triệt tìm hiểu tất cả các sự lập dị như điều này". Thứ tự lặp lại không phải là một phần của hợp đồng của 'ListMap', vì vậy bạn không bao giờ phải suy nghĩ về nó. –
Mô tả giao diện ít cụ thể để lại nhiều không gian hơn cho những thay đổi/cải tiến trong tương lai. Nếu bạn muốn có hành vi đáng tin cậy về thứ tự phần tử, hãy sử dụng 'SortedMap'. – Raphael
Cảm ơn bản đồ đã sắp xếp hoạt động tốt cho tôi. – Zasz