首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java8中使用Lambda表达式对地图进行排序

在Java8中使用Lambda表达式对地图进行排序
EN

Stack Overflow用户
提问于 2018-09-20 22:20:16
回答 2查看 98关注 0票数 1

我已经创建了一个带比较器的Map来按键排序,但是在填充Map之后,在填充数据之后没有应用顺序。

代码语言:javascript
运行
复制
SimpleDateFormat byDay = new SimpleDateFormat("ddMMyyyy");  

    Map<String, DoubleSummaryStatistics> menuStatisticsXDay = new TreeMap<String, DoubleSummaryStatistics>(

                        new Comparator<String>() {

                            @Override
                            public int compare(String dateStr1, String dateStr12) {
                                Date date1 = new Date();
                                Date date2 = new Date();
                                try {
                                    date1 = byDay.parse(dateStr1);
                                } catch (ParseException e) {
                                }
                                try {
                                    date2 = byDay.parse(dateStr1);
                                } catch (ParseException e) {
                                }

                                return date1.compareTo(date2);
                            }

                        });

                menuStatisticsXDay =
        menuPrices.stream().sorted(comparing(MenuPrice::getUpdateDate))
                                .collect(Collectors.groupingBy(cp -> byDay.format(cp.getUpdateDate()),
                                        Collectors.summarizingDouble(cp -> cp.getPriceInDouble())));

这样做,它排序关键字,但作为字符串,所以"06092018“将是第一个"07082018",这就是为什么我想使用我的比较器,转换为日期和排序,然后"07082018”将是第一个"06092018":

代码语言:javascript
运行
复制
Map<String, DoubleSummaryStatistics> menuStatisticsXDay =
        menuPrices.stream().sorted(comparing(MenuPrice::getUpdateDate))
                        .collect(Collectors.groupingBy(m -> byDay.format(m.getUpdateDate()),
                                 Collectors.summarizingDouble(m -> m.getPriceInDouble())))
                        .entrySet().stream()
                        .sorted(Map.Entry.comparingByKey())
                        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,(oldValue, newValue) -> oldValue, LinkedHashMap::new));
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52427324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档