指标数据解析与生成 - 递归方法实现
指标数据解析与生成 - 递归方法实现
本文将介绍如何使用递归方法解析和生成指标数据,并提供一个示例代码来展示具体实现步骤。
1. 数据结构
假设我们有以下指标数据结构:
{id='402880c288ae5f700188b3564a9a00a0', firstName='一级指标1', score=30, lockout=0, parentId='null'}
{id='402880c288ae5f700188b3564a9a00a0', firstName='一级指标1', score=30, lockout=0, parentId='402880c288ae5f700188b3564a9a00a0'}
其中,parentId 表示父级的 id。
2. 指标数据实体类
为了方便处理指标数据,我们定义一个实体类 IndicatorsVO:
public class IndicatorsVO {
/**
* 指标名称
*/
@ApiModelProperty(value = "指标名称", dataType = "String")
private String title;
/**
* 指标id
*/
@ApiModelProperty(value = "指标id")
private String dataIndex;
/**
* 指标key
*/
@ApiModelProperty(value = "指标key -id ", dataType = "String")
private String key;
/**
* 指标分值
*/
@ApiModelProperty(value = "指标分值")
private Integer score;
/**
* 指标插入
*/
@ApiModelProperty(value = "指标插入")
private CustomRender customRender;
/**
* 指标子集
*/
@ApiModelProperty(value = "指标子集")
private List<IndicatorsVO> children;
/**
* 指标子集
*/
@ApiModelProperty(value = "居中")
private String align;
@Data
@ApiModel(value = "考核指标插入")
public static class CustomRender{
/**
* 指标插入
*/
@ApiModelProperty(value = "指标插入")
private String customRender;
}
}
3. 递归解析方法
我们可以使用递归方法解析生成数据,具体实现如下:
public IndicatorsVO parseIndicators(List<Indicators> indicatorsList, String parentId) {
List<IndicatorsVO> children = new ArrayList<>();
for (Indicators indicators : indicatorsList) {
if (indicators.getParentId().equals(parentId)) {
IndicatorsVO indicatorsVO = new IndicatorsVO();
indicatorsVO.setTitle(indicators.getFirstName());
indicatorsVO.setDataIndex(indicators.getId());
indicatorsVO.setKey(indicators.getId());
indicatorsVO.setScore(indicators.getScore());
indicatorsVO.setAlign("center");
if (indicators.getCustomRender() != null) {
IndicatorsVO.CustomRender customRender = new IndicatorsVO.CustomRender();
customRender.setCustomRender(indicators.getCustomRender());
indicatorsVO.setCustomRender(customRender);
}
IndicatorsVO childIndicatorsVO = parseIndicators(indicatorsList, indicators.getId());
if (childIndicatorsVO != null) {
children.add(childIndicatorsVO);
}
indicatorsVO.setChildren(children);
return indicatorsVO;
}
}
return null;
}
4. 递归方法解析
在递归方法中,首先遍历所有的指标对象,判断当前指标对象的 parentId 是否等于传入的 parentId,如果是,则创建一个 IndicatorsVO 对象,并将指标对象的属性赋值给 IndicatorsVO 对象。然后递归调用 parseIndicators 方法,传入当前指标对象的 id 作为 parentId,获取当前指标对象的子指标对象。如果当前指标对象没有子指标对象,则直接返回 IndicatorsVO 对象。最后将所有的子指标对象添加到 IndicatorsVO 对象的 children 属性中,并返回 IndicatorsVO 对象。
5. 使用示例
// 假设 indicatorsList 为指标数据列表
IndicatorsVO rootIndicatorsVO = parseIndicators(indicatorsList, "null");
// 现在 rootIndicatorsVO 包含了所有解析后的指标数据
总结
通过使用递归方法,我们可以轻松地解析和生成指标数据,并将其组织成树形结构。这对于展示指标信息以及进行相关分析都非常有用。
原文地址: https://www.cveoy.top/t/topic/oDHF 著作权归作者所有。请勿转载和采集!