转换为具有可预测顺序的地图

时间:2015-10-03 12:48:36

标签: java dictionary java-8 java-stream collect

我有以下代码:

users.stream()
                .sorted((u1, u2) -> u2.getScore().compareTo(u1.getScore()))
                .limit(count)
                .collect(Collectors.toMap((User::getName), (User::getScore)));

结果的内容是正确的,但是当我想要它的时候 - 它以不可预测的结果输出。我认为这是因为使用了HashMap。

有没有办法收集到具有可预测结果的mp?

1 个答案:

答案 0 :(得分:0)

这有效:

           return users.stream()
            .sorted((u1, u2) -> u2.getScore().compareTo(u1.getScore()))
            .limit(count)
            .collect(Collectors.toMap((User::getName), (User::getScore), (k, v) -> {
                        throw new RuntimeException(String.format("Duplicate key %s", k));
                    },
                    LinkedHashMap::new));