【问题标题】:Sort and Compare LinkedHashMap and fetch 3 elements排序和比较 LinkedHashMap 并获取 3 个元素
【发布时间】:2019-02-18 07:20:40
【问题描述】:

有一个 Json 有许多名为 id 的属性,我必须对其进行排序,然后比较,然后我必须获取最近添加的 3 个以 id 作为属性的对象。

restgetAllRecentOrders:获取所有最近的订单

        List<LinkedHashMap> recentOrders = restCalls.restgetAllRecentOrders();
        if (recentOrders.size() > 0) {
            int recentOrder1Id = (int) ((LinkedHashMap) (recentOrders.get(recentOrders.size() - 1))).get("id");
            recentOrders.sort((LinkedHashMap o1, LinkedHashMap o2) -> ((Integer) o1.get("id")).compareTo((Integer) o2.get("id")));

我无法理解如何获取三个对象,然后根据 id 对它们进行排序和比较

【问题讨论】:

    标签: java list linkedhashmap


    【解决方案1】:

    假设

    JSON:

    [{
      id=1,
      name=name one,
      desc=description one
    }, {
      id=4,
      name=name four,
      desc=description four
    },{
      id=3,
      name=name three,
      desc=description three
    }, {
      id=2,
      name=name two,
      desc=description two
    }, {
      id=0,
      name=name zero,
      desc=description zero
    }]
    

    JAVA:

    List<Integer> recent3 = recentOrders.stream().map(m -> (int) m.get("id")).sorted().skip(Math.max(recentOrders.size() - 3, 0)).collect(Collectors.toList());
    

    【讨论】:

    • 谢谢,但我也希望这个最近的 3 作为一个整数而不是一个列表,我们怎么能做到这一点?我正在尝试并遇到类型转换错误。由于我必须通过的方法将 int 作为参数
    • @LavishKhetan 您需要做的就是将对象转换为 id。我编辑了我的答案以映射 id 属性而不是整个对象。我使用流进行排序以及映射 id 属性并返回整数列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多