Ниже приведен 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.




Вы можете использовать версия sorted, которая принимает Comparator:
List<JsonType> sortedBySize = listOfSizes.stream()
.sorted(Comparator.comparing(jsonObject -> jsonObject.get("size"))
.collect(Collectors.toList());
Не могу сказать, что у вас за JsonType, поэтому вам придется заменить его на.
Чтобы ответить на этот вопрос, вам нужно будет указать ссылку на реализацию JSON, которую вы используете, но вы можете просто проверить ее документацию, чтобы узнать, как получить значение из объекта JSON и использовать этот метод. Один из распространенных шаблонов API JSON заключается в том, что у них есть разные методы для разных типов содержащихся объектов, то есть getNumber, getObject, getArray и т. д.
Спасибо, теперь получили ожидаемый результат !!
большое спасибо! Я попробовал приведенный выше код и заменил JsonType на JsonNode, но столкнулся с проблемой при выполнении .get (), в котором говорится: «Метод get (String) не определен для типа String»