如何使用 lambda .stream() 在 java 中按特定键按字母顺序对 List<jsonNode> 进行排序

问题描述

下面是 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":"68454418"},"SKU_ID":"68454425"}]

我尝试过以下方式:-

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

它不起作用。我也尝试了更多的方法,但没有得到预期的结果。

我现在正在学习 lambda 8。如果您知道这的确切逻辑,请指导我,因为我不想以 foreach 的方式来做。

解决方法

您可以使用version of sorted that takes a Comparator

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

无法判断您的 JsonType 是什么,因此您必须将其替换。