如何在 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
是什么,因此您必须将其替换为。
下面是 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
是什么,因此您必须将其替换为。