Java 8地图未正确按值排序



我已经阅读了许多有关Java 8和该站点收集的问题,并且鉴于我对Java流的理解有限,我在尝试对这张地图进行分类时遇到了一些麻烦。 我的代码如下,成为交易员ArrayList((;

Map<String, Double> buyReport = tradeList.stream().filter(trade -> trade.getInstruction() == Instruction.BUY)
                .sorted(Comparator.comparing(trade -> trade.getInstructionDate()))
                .collect(Collectors.groupingBy(trade -> dateFormat.format(trade.getInstructionDate()),
                        Collectors.summingDouble(trade -> trade.getUSDAmount())));

构成哈希图时包括.sorted((语句是否有意义?我尝试创建一个linkedhashmap,使用自定义比较器作为我需要对象实例进行比较的值(double(,但无济于事。

我可以包含您可能会发现有用的任何其他代码。

预先感谢!!

更新:最近尝试了;按公司代码进行分组,然后总结公司总计仍未取得结果:

Map<String, Double> entityOutgoingReport = tradeList.stream()
                .filter(trade -> trade.getInstruction() == Instruction.SELL)
                .collect(Collectors.groupingBy(trade -> String.valueOf(trade.getEntity()),
                        LinkedHashMap::new,
                        Collectors.summingDouble(trade -> trade.getUSDAmount())));
for (String entity : entityOutgoingReport.keySet()) {
            String key = entity;
            String value = decFormat.format(entityOutgoingReport.get(entity));
            tableBuilder.addRow(key, value); //Just pretty printing to console
        }

简单地提供将插入结果的LinkedHashMap,从而维护顺序。

.collect(Collectors.groupingBy(trade -> 
       dateFormat.format(trade.getInstructionDate()),
                LinkedHashMap::new,
                    Collectors.summingDouble(trade -> trade.getUSDAmount())));

完整代码:

Map<String, Double> entityOutgoingReport = 
      tradeList.stream()
               .filter(trade -> trade.getInstruction() == Instruction.SELL)
               .sorted(Comparator.comparing(trade -> trade.getInstructionDate()))
               .collect(Collectors.groupingBy(trade -> String.valueOf(trade.getEntity()),
                        LinkedHashMap::new,
                        Collectors.summingDouble(trade -> trade.getUSDAmount())));

最新更新