【问题标题】:Lambda Expressions Java [closed]Lambda 表达式 Java [关闭]
【发布时间】:2022-11-14 16:05:48
【问题描述】:

由于我不熟悉 Lambda 表达式,请您以更经典的形式提供“开始”和“结束”之间的代码。提前谢谢了!

        Map<String, Integer> map = new HashMap<>();
        map.put("word1",1);
        map.put("word2",2);
        map.put("word3",3);
        List<String> temp = new ArrayList<>(map.keySet());

        //begin
        Collections.sort(temp, (a,b) -> {
            if(map.get(a)==map.get(b))
                return a.compareTo(b);
            return map.get(b)- map.get(a);
        });
        //end

【问题讨论】:

  • 合适的 IDE 可以为您做到这一点,无需在 SO 上发布相关信息。
  • 您想以类似方法的方式查看它吗?
  • @azro 是的,我认为这对我有帮助
  • 由于您“不熟悉 lambda 表达式”,因此首先尝试自己进行此转换似乎是获得熟悉的极好方法。然后,如果仍然卡住,您可以在问题中展示您的尝试。
  • 顺便说一句,由于可能的整数溢出/下溢,不建议使用map.get(b)- map.get(a),更喜欢Integer.compare(),或者在这种情况下避免自动装箱compareTo()

标签: java lambda expression


【解决方案1】:

您可以使用传统方法代替 Lamba 匿名类

Collections.sort(temp, new Comparator<String>() {
        @Override
        public int compare(String a, String b) {
            if (map.get(a) == map.get(b))
                return a.compareTo(b);
            return map.get(b) - map.get(a);
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多