三级菜单后台封装

通过steam流来完成
package com.ktjy.test.stream;

import com.ktjy.pojo.AppCategory;
import com.ktjy.service.AppCategoryService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 使用Stream API处理应用分类的示例类
 */
public class Main1 {
    /**
     * 使用Stream API对应用分类列表进行处理,筛选出父分类ID为0的分类,并为其添加子分类
     *
     * @param list 输入的应用分类列表
     * @return 处理后的应用分类列表,包含父分类及其子分类
     */
    public static List<AppCategory> doStream(List<AppCategory> list) {

        // 筛选父分类(parentId为0的分类),并为每个父分类添加子分类
        List<AppCategory> collect1 = list.stream()
                .filter(item -> item.getParentId() != null && item.getParentId() == 0)
                .map(
                        AppCategory -> {
                            onChildRenStream(list, AppCategory);
                            return AppCategory;
                        })
                .collect(Collectors.toList());
        return collect1;
    }

    /**
     * 为指定的父分类添加子分类
     *
     * @param list            应用分类列表
     * @param parentCategory 父分类
     */
    private static void onChildRenStream(List<AppCategory> list, AppCategory parentCategory) {
        // 根据父分类的ID筛选子分类,并将子分类添加到父分类的children列表中
        list.stream().filter(item -> item.getParentId() == parentCategory.getId())
                .map(category -> {
                    onChildRenStream(list, category);
                    parentCategory.getChildren().add(category);
                    return category;
                }).collect(Collectors.toList());
    }

    /**
     * 程序入口
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 初始化Spring上下文
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从Spring上下文中获取AppCategoryService bean
        AppCategoryService appCategoryService = (AppCategoryService) context.getBean("appCategoryServiceImpl");
        
        // 调用AppCategoryService的selectAll方法获取所有应用分类
        List<AppCategory> appCategories = appCategoryService.selectAll();
        // 使用Stream API处理应用分类
        List<AppCategory> appCategories1 = doStream(appCategories);
        
        // 打印处理后的应用分类及其子分类
        System.out.println("===================================");
        for (AppCategory appCategory1 : appCategories1) {
            System.out.println(appCategory1.getCategoryName());
            for (AppCategory appCategory2 : appCategory1.getChildren()) {
                System.out.println("\t" + appCategory2.getCategoryName());
                for (AppCategory appCategory : appCategory2.getChildren()) {
                    System.out.println("\t\t" + appCategory.getCategoryName());
                }
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值