【Java】Java 常用代码片段

目录

一、树形结构相关代码

1.1 树形结构构造 -- 常用于构造目录

1.2 循环删除节点 -- 循环操作某个节点及其子节点

二、时间相关代码

2.1 时间格式化

三、JSON处理

3.1 将JSON格式的字符串转成map

3.2 将一种类型的bean数组转换成成另一种bean类型的数组

3.3将bean转换成map


一、树形结构相关代码

1.1 树形结构构造 -- 常用于构造目录

@Override
public CatResult getItemCatList() {
    CatResult catResult = new CatResult();
    // 调用递归的函数
    catResult.setData(getCatList(0));
    return catResult;
}


/**
 * 递归查询分类
 * @param parentId
 * @return
 */
private List<?> getCatList(long parentId) {
    // 创建查询条件
    TbItemCatExample example = new TbItemCatExample();
    TbItemCatExample.Criteria criteria = example.createCriteria();
    criteria.andParentIdEqualTo(parentId);
    // 执行查询
    // 先取出父节点是 parentId 的节点
    List<TbItemCat> lists = tbItemCatMapper.selectByExample(example);
    List resultList = new ArrayList<>();

    // 由于界面显示,只显示14个parentId == 0
    int count = 0;
    // 循环构造成需要的格式
    for (TbItemCat tbItemCat : lists) {
        CatNode catNode = new CatNode();

        // 判断是否为父节点
        if(tbItemCat.getIsParent()) {
            if(parentId == 0) {
                catNode.setName("<a href='/products/"+tbItemCat.getId()+".html'>"+tbItemCat.getName()+"</a>");
            } else {
                catNode.setName(tbItemCat.getName());
            }
            catNode.setUrl("/products/" + tbItemCat.getId() + ".html");
            catNode.setItem(getCatList(tbItemCat.getId()));
            resultList.add(catNode);

            // 由于界面显示,只显示14个parentId == 0
            count++;
            if(parentId == 0 && count >= 14) {
                break;
            }
        } else {
            resultList.add("/products/" + tbItemCat.getId() + ".html|" + tbItemCat.getName());
        }
    }
    return resultList;
}

 

1.2 循环删除节点 -- 循环操作某个节点及其子节点

一次性查出所有要删除的索引,使用 in 删除

/**
 * 删除节点
 * @param parentId
 * @param nodeId
 * @return
 */
@Override
public TaotaoResult removeContentCategory(Long parentId, Long nodeId) {
    // 获取所有要删除的节点内容
    List<Long> lists = getNeedRemoveItemIdList(nodeId);

    // 删除当前节点
    TbContentCategoryExample tbRemoveExample = new TbContentCategoryExample();
    TbContentCategoryExample.Criteria rmCriteria = tbRemoveExample.createCriteria();
    rmCriteria.andIdIn(lists);
    int count = tbContentCategoryMapper.deleteByExample(tbRemoveExample);
}

/**
 * 获取所有要删除的id
 * @param nodeId
 * @return
 */
@Override
public List<Long> getNeedRemoveItemIdList(Long nodeId) {
    List<Long> idList = new ArrayList<>();

    // 先添加自己
    idList.add(nodeId);

    // 判断当前节点是否是其他节点的父节点
    TbContentCategoryExample example = new TbContentCategoryExample();
    TbContentCategoryExample.Criteria criteria =  example.createCriteria();
    criteria.andParentIdEqualTo(nodeId);
    List<TbContentCategory> list = tbContentCategoryMapper.selectByExample(example);

    // 若当前节点是其他节点的父节点
    if(list.size() > 0) {
        // 循环删除子节点
        for (TbContentCategory item : list) {
            // 添加自己
            idList.addAll(getNeedRemoveItemIdList(item.getId()));
        }
    }

    return idList;
}

 

二、时间相关代码

2.1 时间格式化

通过 SimpleDateFormat 类进行时间格式化

Date date = new Date();
String strFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
String strTime = sdf.format(date);

 

三、JSON处理

使用 fastjson 处理

<!--fastjson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.51</version>
</dependency>

3.1 将JSON格式的字符串转成map

Map<String, String> specMap = JSON.parseObject(spec, Map.class);

3.2 将一种类型的bean数组转换成成另一种bean类型的数组

import com.alibaba.fastjson.JSON;

List<Sku> skuList = skuFeign.findAll();

// 将LIST<SKU>转换成LIST<SKUINFO>
List<SkuInfo> skuInfoList = JSON.parseArray(JSON.toJSONString(skuList), SkuInfo.class);

3.3将bean转换成map

Map<String, Object> specMap = JSON.parseObject(skuInfo.getSpec(), Map.class);

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值