(4条消息) Java案例树形数据结构及构建;数据结构思路优化方案_学习微站的博客-CSDN博客_java树形结构数据

143 阅读2分钟

学习微站 已于 2022-10-03 14:45:33 修改 409 收藏

于 2022-02-11 17:10:29 首次发布

本网站刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等在网上搜集或者是自己原创的。 访问者可将本网站提供的内容或服务用于时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务用于其他用途时,须征得本网站及相关权利人的书面许可,并支付报酬。 不得以任何形式侵犯作者权益,最终解释权归本人所有。

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;
    }



本文使用 文章同步助手 同步