我正在嘗試對包含一個對象和一個雙精度值的哈希圖進行排序,但它沒有按預期工作。這是我的代碼。HashMap<Route, Double> unsortedRoutes = new HashMap<>();unsortedRoutes.add(new Route("Route Z"),9.49307305463114167);unsortedRoutes.add(new Route("Route A"),9.546311415463114167);unsortedRoutes.add(new Route("Route K"),9.37307305463114167);unsortedRoutes.add(new Route("Route Y"),9.89730305463114167);unsortedRoutes.add(new Route("Route Z"),3.49307305463114167);unsortedRoutes.add(new Route("Route A"),3.41870305463114167);unsortedRoutes.add(new Route("Route K"),4.49307305463114167);unsortedRoutes.add(new Route("Route Y"),5.34307305463114167);HashMap<Route, Double> sortedRoutes = new HashMap<>(); unsortedRoutes.entrySet() .stream() .sorted(comparingByValue()) .forEachOrdered(x -> sortedRoutes.put(x.getKey(), x.getValue()));當我運行代碼時,這些是我得到的結(jié)果Name: Route D Distance = 3.4187030546311417Name: Route J Distance = 5.343073054631142Name: Route A Distance = 9.546311415463114Name: Route Y Distance = 9.897303054631141Name: Route U Distance = 4.493073054631141Name: Route K Distance = 9.373073054631142Name: Route Z Distance = 9.493073054631141Name: Route Q Distance = 3.4930730546311417我希望結(jié)果按升序列出。
1 回答

aluckdog
TA貢獻1847條經(jīng)驗 獲得超7個贊
HashMap
s 不保證存儲在其中的元素的順序,因此即使您put
以排序方式調(diào)用,結(jié)果HashMap
也沒有內(nèi)在順序。如果要保留put
調(diào)用的順序,則應使用LinkedHashMap
:
Map<Route, Double> sortedRoutes = new LinkedHashMap<>();
添加回答
舉報
0/150
提交
取消