如何使用Stream函数生成子列表topTen Map?

时间:2017-06-28 19:58:48

标签: java sorting java-8 java-stream

我有一个非常常见的任务,我真的想要使用Java 8的流函数来解决。我仍然试图掌握涉及这个的大多数部分,所以我希望我没有理解任何错误。< / p>

我有一个数据库,我从中获取数据以生成LinkedHashMap并将其传递给我的函数以从中提取前n个值,并以有序的方式返回仅包含这n个值的映射。我真的想用教育目的使用流函数解决这个问题(更个性化,没有老师问我这个问题)。

我构建这个函数,期望流函数在后台执行算法,但是一旦我用这些数据显示图表,很明显它是不正确的。我试图在文档/网站上找到我的答案,但我找不到任何有用的东西。

到目前为止,我提出的工作并不正常,我觉得我可能在这里理解错误了:

private Map<String, Number> getTopValuesDataMap(Map<String, Number> chartDataMap) {
    return chartDataMap.entrySet().stream()
            .sorted(Map.Entry.comparingByValue(Comparator.comparing(Number::intValue).reversed())).limit(12)
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                    (oldValue, newValue) -> oldValue, LinkedHashMap::new));
}

感谢先进的任何帮助。

编辑:

似乎错误在于其他地方。已经注意到这个功能毕竟是正常的。需要做更多的测试。

非常感谢

0 个答案:

没有答案