为了账号安全,请及时绑定邮箱和手机立即绑定

Java按双值排序哈希图不起作用

Java按双值排序哈希图不起作用

缥缈止盈 2021-09-29 10:18:49
我正在尝试对包含一个对象和一个双精度值的哈希图进行排序,但它没有按预期工作。这是我的代码。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()));当我运行代码时,这些是我得到的结果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我希望结果按升序列出。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

HashMaps 不保证存储在其中的元素的顺序,因此即使您put以排序方式调用,结果HashMap也没有内在顺序。如果要保留put调用的顺序,则应使用LinkedHashMap

Map<Route, Double> sortedRoutes = new LinkedHashMap<>();


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信