Сортируйте и сравнивайте LinkedHashMap и выбирайте 3 элемента - PullRequest
0 голосов
/ 18 февраля 2019

Существует 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")));

Я не могу понять, как я могу получить три объекта, после сортировки и последующего сравнения их на основе идентификаторов

1 Ответ

0 голосов
/ 18 февраля 2019

Предположим,

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());
...