问题描述
下面是 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
是什么,因此您必须将其替换。