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

How to sort List<jsonNode> alphabetically by a specific key using lambda .stream() in 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();  

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

我现在正在学习 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 是什么,因此您必须将其替换为。