回答
如果您正在考慮性能,那麼在數據庫結束時會對較大的結果集進行更好的排序,特別是在對您進行排序的列進行索引時。
對於較小的數據集性能差異可能並不重要,但我認爲在大多數情況下,SQL的Order By子句將是更簡單的方法。
順便說一句,如果您必須在使用它之前將已排序的數據存儲在地圖中,您仍然必須使用LinkedHashMap而不是普通的HashMap。因爲LinkedHashMap將保持數據的插入順序,而HashMap不會。
如果您希望數據在放入Map中時自動排序,那麼您將需要TreeMap或另一個排序的映射實現。
如果您有合適的索引,數據庫可以按照需要的順序讀取記錄,而且根本沒有人需要對它們進行分類。根據查詢,數據庫可能需要對記錄進行排序,例如,做一個GROUP BY或UNION。無論如何,讓SQL進行排序確實更容易,所以如果沒有強大的性能增益,我會選擇更簡單的代碼。只要有可能,我就讓SQL做所有的準備工作和排序,以便調用程序可以一次一個地讀取記錄並處理它們,而不必將它們放入任何結構中。 – Jay 2010-01-27 18:06:16
很大程度上取決於實現,列表大小等。我會說,如果你可以在你的SQL查詢中做一個命令,那會把開銷推到數據庫上,而且你不需要進行排序在應用程序中。還要確保您在應用程序中使用的數據結構能夠保留順序,即不要將結果插入到散列表中。但是很大程度上取決於你想要實現的細節。
還取決於您正在嘗試執行「排序」的字段或使用它在Java代碼中進行隨意排序。但是在大多數情況下,我會依賴DB來完成訂單。
首先..
使用HashMap中會破壞任何試圖「ORDER BY」在你的SQL,因爲你不能保證取回你把項目的順序。所以如果你在你的SQL中使用'order by',你將被迫使用LinkedHashMap進行存儲來保留項目順序。
如果您設置了有效的比較器,TreeMap將爲您訂購。
我的偏好將基於列表和用法的大小。如果很多人每天都會訪問這個列表並刷新它,我寧願有他們自己的用戶界面來處理訂購。這部分取決於。
- 1. 更好地使用Perl或UNIX命令來解析這個字符串
- 2. TreeSet或TreeMap - 按指令
- 3. 哪個更好?使用內置的python函數或os.system命令?
- 4. 更好地使用兩列或DATETIME
- 5. 更好地使用webview或Phonegap?
- 6. 更好的Windows命令?
- 7. 更好地引用shell腳本執行命令
- 8. 更好地使用接地列表,或不是?
- 9. 更好地處理cmd.Cmd命令行解釋器中的KeyboardInterrupt
- 10. 調整MAFFT命令行算法以更好地解決差距
- 11. linux的時間命令微秒或更好的精度
- 12. 更好地利用int.Parse或Convert.ToInt32
- 13. 更好的Windows命令行外殼
- 14. 更好地使用UIScrollView或UITableView用於水平按鈕?
- 15. 更好的命名約定或更好的結構/類嗎?
- 16. 如何用`tools.cli`更好地解析`clojure`中的命令行參數?
- 17. 使用split命令使用slice命令?
- 18. 使用dock命令使用aws命令
- 19. 是更好地使用XNodeEqualityComparer或XElement.DeepEquals比較XML對象?
- 20. 使用MySQL或PHP更好地隨機化結果?
- 21. 更好地使用多個語言文件或1?
- 22. MVC - 從代碼輸出HTML,更好地使用Response.OutputStream或StringBuilder
- 23. 刮推文 - 更好地使用該網站或API?
- 24. 更好地使用SelectedIndex或SelectedItem的組合框?
- 25. 使用本地或全局變量更好嗎
- 26. 更好地使用大小或指望收集?
- 27. 更好地使用一個列表對,或兩個列表?
- 28. 更好地使用構造函數或方法工廠模式?
- 29. 更好地結合&縮小JavaScript或使用Google CDN?
- 30. 如何使用Linux中的命令動態地更改日期
如果您提供了關於您正在使用的代碼的一些詳細信息,則此問題會更清晰。請記住,我們無法訪問您腦子裏的一切。 – danben 2010-01-22 19:21:39
鏈接的哈希映射沒有排序。它只保留輸入順序。你可能正在考慮一個Treemap。 – 2010-01-22 19:22:54
這是正確的史蒂夫,我的意思是樹形圖。 – Shah 2010-01-22 19:30:50