看來,MultiMap的addBinding不會保留綁定到同一個鍵的值的插入順序,因爲它使用的基礎機制是HashSet。用MultiMap保持插入順序的慣用方法是什麼?Scala可變的MultiMap addBinding和插入順序保存
3
A
回答
6
基於MultiMap
裏執行狀態:
/** Creates a new set.
*
* Classes that use this trait as a mixin can override this method
* to have the desired implementation of sets assigned to new keys.
* By default this is `HashSet`.
*
* @return An empty set of values of type `B`.
*/
protected def makeSet: Set[B] = new HashSet[B]
你可以簡單的定義:
trait OrderedMultimap[A, B] extends MultiMap[A, B] {
override def makeSet: Set[B] = new LinkedHashSet[B]
}
0
一種方式很可能會回落到正規的地圖(不multimap)來說,使用集合的值類型,而該集合將是一個集合類型,可以強制執行訂單(即不是集合)。據我所知,爲了保持允許元素重複的廣義插入順序,要使用的自然Scala集合將是一個Seq實現(例如Vector或Queue,取決於訪問模式)。
相關問題
- 1. 爲什麼在MultiMap中沒有保存插入順序?
- 2. ,保留插入順序
- 3. Scala HashMap:迭代插入順序?
- 4. 自適應地圖Scala中(或Java)保留插入順序
- 5. 如何按照插入順序遍歷Multimap?
- 6. 爲什麼可變和不可變ListMaps在Scala中有不同的順序?
- 7. 淘汰賽可保存排序順序
- 8. 我可以通過WCF保證IEnumerables的插入順序嗎?
- 9. 保留番石榴的插入順序SetMultimap
- 10. 是否在MongoDB中保存了插入順序?
- 11. 不是std :: unordred_map保存插入順序嗎?
- 12. 「插入順序保存在集合中」是什麼意思?
- 13. MySQL的順序STRING爲INT和插入
- 14. 使用boost multi_index_container來保留插入順序
- 15. 批量插入中的插入順序
- 16. 如果兩個元素的鍵相等,std :: multimap是否會保留插入順序?
- 17. 保存dataGrid的狀態:可見列,列寬和順序
- 18. 如何保存JTable列的寬度,順序和可見性
- 19. B +樹插入順序
- 20. 數據框可以加入Spark保存順序嗎?
- 21. 迭代保存變量和調用順序
- 22. FastMember列順序保存
- 23. JSON不保存順序
- 24. TinyMCE按鈕插入順序
- 25. Flex DataGrid順序插入
- 26. numpy.unique與順序保存
- 27. 我需要一個不變的鍵值結構,保留插入順序
- 28. 如何使Scala的不可變集合保存不可變對象
- 29. Play/Scala/Anorm將可變數量的問題保存回答
- 30. 保存順序排序的jQuery到PHP
是否還需要重寫其他方法?檢查出源代碼......謝謝! :) – matanster 2014-09-26 20:46:52
不,實現需要一個''Set'',無論實現是什麼 – 2014-09-26 20:47:43