根据嵌套列表Java中的日期字段对主列表进行排序

San San

我在下面列出了对象,并且需要根据日期之前的成分对其进行排序。因此,日期最久的食谱应该排在最后。

 [
    {
        "id": 2,
        "recipeName": "Burger",
        "createdDate": "2020-11-22T00:00:00.000+00:00",
        "ingredients": [
            {
                "ingredientId": 3,
                "ingredientName": "Burger Bun",
                "category": "",
                "useBy": "2020-12-20",
                "bestBefore": "2020-12-23"
            },
            {
                "ingredientId": 4,
                "ingredientName": "Beef Pattie",
                "category": "",
                "useBy": "2020-12-20",
                "bestBefore": "2020-12-23"
            },
            {
                "ingredientId": 5,
                "ingredientName": "Tomato",
                "category": "",
                "useBy": "2020-12-20",
                "bestBefore": "2020-09-10"
            }
        ]
    },
    {
        "id": 3,
        "recipeName": "Chicken Salad",
        "createdDate": "2020-11-22T00:00:00.000+00:00",
        "ingredients": [
            {
                "ingredientId": 7,
                "ingredientName": "Chicken",
                "category": "",
                "useBy": "2020-12-20",
                "bestBefore": "2020-12-23"
            },
            {
                "ingredientId": 6,
                "ingredientName": "Salad Mix",
                "category": "",
                "useBy": "2020-12-20",
                "bestBefore": "2020-11-15"
            }
        ]
    }
]

我已经尝试过下面的代码,但是它只是对配方中的配料进行排序,而不是列表中的配方对象。Java 8 Streams是否可以实现?

List<Recipes> finalList = filteredList.stream().sorted((o1, o2) -> (int) (o1.getId() - o2.getId()))
        .map(recipes -> {
            List<Ingredients> in = recipes.getIngredients().stream()
                    .sorted(Comparator.comparing(Ingredients::getBestBefore).reversed()).collect(Collectors.toList());
            recipes.setIngredients(in);
            return recipes;
        }).collect(Collectors.toList());
纳曼

由于您需要确保任何成分的历史最悠久bestBefore,因此该食谱应排在列表的最后。您可能需要max在配方的成分中标识(最早的)日期,为此可以创建如下方法:

private static Date findOldestBestBeforeForRecipe(Recipes recipes) {
    return recipes.getIngredients()
            .stream()
            .map(Ingredients::getBestBefore)
            .max(Comparator.naturalOrder())
            .orElseThrow(() -> new IllegalArgumentException("recipes without ingredients!!"));
}

然后对您的配方进行排序,将可以简化操作,例如Comparator<Recipes>为此条件定义a并将其附加到现有比较中。

Comparator<Recipes> ingredientsBestBeforeDate = (o1, o2) ->
        findOldestBestBeforeForRecipe(o2).compareTo(findOldestBestBeforeForRecipe(o1));

List<Recipes> finalList = filteredList.stream()
        .sorted(Comparator.comparingInt(Recipes::getId)
                .thenComparing(ingredientsBestBeforeDate))
        .collect(Collectors.toList());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据内部列表中的字段对Java中的两个嵌套列表进行排序和分组

来自分类Dev

JAVA:如何根据字段对列表进行排序

来自分类Dev

根据列表中每个成员的字段对列表进行排序

来自分类Dev

根据嵌套字典中的值对列表进行排序

来自分类Dev

如何根据Scala中的对象字段对列表对象进行排序?

来自分类Dev

根据Python中的创建日期对文件列表进行排序

来自分类Dev

根据日期在jquery和handlebar中对列表标签进行排序

来自分类Dev

根据对象列表中列表中的字段对对象列表进行排序

来自分类Dev

根据对象列表中列表中的字段对对象列表进行排序

来自分类Dev

根据主列表对类实例的列表进行排序

来自分类Dev

根据对象字段的分组对列表进行排序,根据组中的最大值进行排序

来自分类Dev

根据标签值对Java列表中的XML行进行排序

来自分类Dev

根据另一个排序的嵌套列表python对嵌套列表进行排序

来自分类Dev

R:按嵌套列表中的值对列表进行排序

来自分类Dev

对嵌套列表中的每个子列表进行排序

来自分类常见问题

Comparator.comparing使用嵌套对象的字段对列表进行排序

来自分类Dev

如何根据子列表中的值对列表进行排序?

来自分类Dev

如何根据列表值对查询中的元组列表进行排序?

来自分类Dev

根据列表 Python 中的特定部分对列表进行排序

来自分类Dev

根据特定字段对字符串列表进行排序

来自分类Dev

根据特定字段对字符串列表进行排序

来自分类Dev

如何根据重复字段对对象列表进行排序?

来自分类Dev

CAML查询以根据修改日期对列表项进行排序

来自分类Dev

根据熊猫中数据框的日期列对词典列表进行排序

来自分类Dev

根据创建日期在一个列表中对两个模型进行排序

来自分类Dev

根据票数对列表进行排序

来自分类Dev

根据票数对列表进行排序

来自分类Dev

按嵌套列表的值对列表进行排序

来自分类Dev

对列表中的列表进行排序

Related 相关文章

  1. 1

    根据内部列表中的字段对Java中的两个嵌套列表进行排序和分组

  2. 2

    JAVA:如何根据字段对列表进行排序

  3. 3

    根据列表中每个成员的字段对列表进行排序

  4. 4

    根据嵌套字典中的值对列表进行排序

  5. 5

    如何根据Scala中的对象字段对列表对象进行排序?

  6. 6

    根据Python中的创建日期对文件列表进行排序

  7. 7

    根据日期在jquery和handlebar中对列表标签进行排序

  8. 8

    根据对象列表中列表中的字段对对象列表进行排序

  9. 9

    根据对象列表中列表中的字段对对象列表进行排序

  10. 10

    根据主列表对类实例的列表进行排序

  11. 11

    根据对象字段的分组对列表进行排序,根据组中的最大值进行排序

  12. 12

    根据标签值对Java列表中的XML行进行排序

  13. 13

    根据另一个排序的嵌套列表python对嵌套列表进行排序

  14. 14

    R:按嵌套列表中的值对列表进行排序

  15. 15

    对嵌套列表中的每个子列表进行排序

  16. 16

    Comparator.comparing使用嵌套对象的字段对列表进行排序

  17. 17

    如何根据子列表中的值对列表进行排序?

  18. 18

    如何根据列表值对查询中的元组列表进行排序?

  19. 19

    根据列表 Python 中的特定部分对列表进行排序

  20. 20

    根据特定字段对字符串列表进行排序

  21. 21

    根据特定字段对字符串列表进行排序

  22. 22

    如何根据重复字段对对象列表进行排序?

  23. 23

    CAML查询以根据修改日期对列表项进行排序

  24. 24

    根据熊猫中数据框的日期列对词典列表进行排序

  25. 25

    根据创建日期在一个列表中对两个模型进行排序

  26. 26

    根据票数对列表进行排序

  27. 27

    根据票数对列表进行排序

  28. 28

    按嵌套列表的值对列表进行排序

  29. 29

    对列表中的列表进行排序

热门标签

归档