Как отсортировать List <jsonNode> в алфавитном порядке по определенному ключу с помощью lambda .stream () в java

Ниже приведен JsonNode, который необходимо отсортировать в алфавитном порядке по «размеру» ключа.

List<JsonNode> listOfSizes =[{"size":"CAL KING","SKU_ID":"68454463"},
                             {"size":"KING","SKU_ID":"68454456"},
                             {"size":"TWIN XL","SKU_ID":"68454425"},
                             {"size":"QUEEN","SKU_ID":"68454449"},
                             {"size":"FULL","SKU_ID":"68454432"},
                             {"size":"TWIN","SKU_ID":"68454418"}]

Ожидаемый результат сортировки: -

[{"size":"CAL KING","SKU_ID":"68454463"},
 {"size":"FULL","SKU_ID":"68454432"},
 {"size":"KING","SKU_ID":"68454456"},
 {"size":"QUEEN","SKU_ID":"68454449"},
 {"size":"TWIN","SKU_ID":"68454418"},
 {"size":"TWIN XL","SKU_ID":"68454425"}]

Я пробовал делать это ниже: -

listOfSizes.stream().filter(sku -> NotEmpty(sku.get("size"))).sorted();  

Это не работает. Я также попробовал еще пару способов, но не получил ожидаемого результата.

Сейчас я изучаю лямбда 8. Ребята, помогите мне, если вы знаете точную логику этого, потому что я не хочу делать это способом foreach.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать версия sorted, которая принимает Comparator:

List<JsonType> sortedBySize = listOfSizes.stream()
    .sorted(Comparator.comparing(jsonObject -> jsonObject.get("size"))
    .collect(Collectors.toList());

Не могу сказать, что у вас за JsonType, поэтому вам придется заменить его на.

большое спасибо! Я попробовал приведенный выше код и заменил JsonType на JsonNode, но столкнулся с проблемой при выполнении .get (), в котором говорится: «Метод get (String) не определен для типа String»

Pooja 30.03.2021 13:06

Чтобы ответить на этот вопрос, вам нужно будет указать ссылку на реализацию JSON, которую вы используете, но вы можете просто проверить ее документацию, чтобы узнать, как получить значение из объекта JSON и использовать этот метод. Один из распространенных шаблонов API JSON заключается в том, что у них есть разные методы для разных типов содержащихся объектов, то есть getNumber, getObject, getArray и т. д.

midor 30.03.2021 13:19

Спасибо, теперь получили ожидаемый результат !!

Pooja 30.03.2021 13:27

Другие вопросы по теме