Java案例树形数据结构及构建;数据结构思路优化方案

简介: Java案例树形数据结构及构建@Dat

Java案例树形数据结构及构建

@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysDataDictTreeResp extends SysDataDict {
    @ApiModelProperty(value = "子集")
    List<SysDataDictTreeResp> childrenList;
}

//构建树

private List<SysDataDictTreeResp> generateDictTree(Map<String, List<SysDataDict>> dataGroupMap,
                                                       List<SysDataDict> defaultGroupSonKeys) {
        return defaultGroupSonKeys.stream().map(data -> {
            SysDataDictTreeResp resp = new SysDataDictTreeResp();
            BeanUtils.copyProperties(data, resp);
            resp.setChildrenList(generateChildrenDict(dataGroupMap, data.getDataKey()));
            return resp;
        }).collect(Collectors.toList());
    }
    private List<SysDataDictTreeResp> generateChildrenDict(Map<String, List<SysDataDict>> dataGroupMap, String dataKey) {
        if (dataGroupMap.containsKey(dataKey)) {
            List<SysDataDict> mapValues = dataGroupMap.get(dataKey);
            return generateDictTree(dataGroupMap, mapValues);
        }
        return Collections.emptyList();
    }

数据结构思路优化方案

数据结构优化方案

@Override
    public Boolean setOrderCustomerServiceStatus(Long id, Integer status) {
        LOGGER.info("id:{}, status:{}", id, status);
        OrderCustomerService orderCustomerService = orderCustomerServiceMapper.getById(id);
        if (null == orderCustomerService) {
            throw new OrderException(OrderExceptionResult.ORDER_CUSTOMER_SERVICE_NOT_EXITS);
        }
        if (OrderConstant.ORDER_CUSTOMER_SERVICE_STATUS_PROCESSED.equals(orderCustomerService.getStatus())) {
            LOGGER.info("备注已处理,不能更新");
            throw new OrderException(OrderExceptionResult.ORDER_CUSTOMER_SERVICE_STATUS_PROCESSED);
        }
        if (status.equals(orderCustomerService.getStatus())) {
            LOGGER.info("订单备注状态重复");
            throw new OrderException(OrderExceptionResult.ORDER_CUSTOMER_SERVICE_STATUS_REPEAT);
        }
        Date now = DateUtils.getNow();
        orderCustomerServiceMapper.setOrderCustomerServiceStatus(id, status, now);
        return true;
    }

考虑到不同的情况,做一个处理

如不存在

如备注已处理,不能更新

如订单备注状态和前端传入的值一样

以上情况都提示

将被下面代码处理

    public enum OrderExceptionResult implements IExceptionResult {
  。。。。。     
    ORDER_CUSTOMER_SERVICE_STATUS_PROCESSED(1025, "订单备注状态已处理"),
    ORDER_CUSTOMER_SERVICE_NOT_EXITS(1026, "订单备注不存在"),
    ORDER_CUSTOMER_SERVICE_STATUS_REPEAT(1027, "订单备注状态重复"),
    ;
    private int code;
    private String msg;
    OrderExceptionResult(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    @Override
    public int getCode() {
        return code;
    }
    @Override
    public String getMsg() {
        return msg;
    }
    public IExceptionResult buildParamErrorMsg(String paramErrorMsg) {
        if (paramErrorMsg == null || "".equals(paramErrorMsg)) {
            paramErrorMsg = "";
        }
        if (this.code == PARAM_ERROR.code) {
            this.msg = "参数 " + paramErrorMsg + " 不能为空";
        }
        return this;
    }
相关文章
|
6天前
|
存储 NoSQL Java
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
这篇文章是关于Java面试中的分布式架构问题的笔记,包括分布式架构下的Session共享方案、RPC和RMI的理解、分布式ID生成方案、分布式锁解决方案以及分布式事务解决方案。
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
|
2天前
|
缓存 监控 Java
"Java垃圾回收太耗时?阿里HBase GC优化秘籍大公开,让你的应用性能飙升90%!"
【8月更文挑战第17天】阿里巴巴在HBase实践中成功将Java垃圾回收(GC)时间降低90%。通过选用G1垃圾回收器、精细调整JVM参数(如设置堆大小、目标停顿时间等)、优化代码减少内存分配(如使用对象池和缓存),并利用监控工具分析GC行为,有效缓解了高并发大数据场景下的性能瓶颈,极大提升了系统运行效率。
18 4
|
1天前
|
安全 前端开发 Java
随着企业应用复杂度提升,Java Spring框架以其强大与灵活特性简化开发流程,成为构建高效、可维护应用的理想选择
随着企业应用复杂度提升,Java Spring框架以其强大与灵活特性简化开发流程,成为构建高效、可维护应用的理想选择。依赖注入使对象管理交由Spring容器处理,实现低耦合高内聚;AOP则分离横切关注点如事务管理,增强代码模块化。Spring还提供MVC、Data、Security等模块满足多样需求,并通过Spring Boot简化配置与部署,加速微服务架构构建。掌握这些核心概念与工具,开发者能更从容应对挑战,打造卓越应用。
6 1
|
6天前
|
缓存 监控 Java
Java性能优化:从单线程执行到线程池管理的进阶实践
在Java开发中,随着应用规模的不断扩大和用户量的持续增长,性能优化成为了一个不可忽视的重要课题。特别是在处理大量并发请求或执行耗时任务时,单线程执行模式往往难以满足需求,这时线程池的概念便应运而生。本文将从应用场景举例出发,探讨Java线程池的使用,并通过具体案例和核心代码展示其在实际问题解决中的强大作用。
22 1
|
6天前
|
监控 Java
Java文件夹复制解决方案:优化大文件与大量数据的处理
Java中复制文件夹及其内容,尤其是当处理大文件或文件夹(如几个GB)时,需要特别注意内存使用和性能优化。以下是一个详细的指导,包括如何避免内存溢出异常,并确保复制过程的高效性。
15 1
|
6天前
|
存储 Java 数据挖掘
|
6天前
|
算法 C语言 C++
【practise】栈的压入和弹出序列
【practise】栈的压入和弹出序列
|
4天前
栈的几个经典应用,真的绝了
文章总结了栈的几个经典应用场景,包括使用两个栈来实现队列的功能以及利用栈进行对称匹配,并通过LeetCode上的题目示例展示了栈在实际问题中的应用。
栈的几个经典应用,真的绝了
|
6天前
|
C语言
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
这篇文章展示了如何使用栈(包括顺序栈和链栈)实现将十进制数值转换成八进制数值的方法,通过C语言编程演示了两种栈的实现方式和使用场景。
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
|
1天前
|
负载均衡 网络协议 安全
DKDP用户态协议栈-kni
DKDP用户态协议栈-kni