《零散代码块 · 列表转换键值对象》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

CSDN.gif

写在前面的话

本系列博文进行一些Java开发日常代码块分享。


将列表转换为键值对象

**场景一:**无论后端还是前端,都有这个场景,后端List(或前端Array),通常不能直接用来渲染使用,根据某个属性,转换为后端Map<String, List>(或前端JSON对象),方便后续使用。

List<LwUserInfo> dataList = new ArrayList<>();
Map<String, List<LwUserInfo>> userNameMap = new HashMap<>(16);
for (LwUserInfo lwUserInfo : dataList) {
    String name = lwUserInfo.getNickName();
    if (userNameMap.containsKey(name)) {
        userNameMap.get(name).add(lwUserInfo);
    } else {
        List<LwUserInfo> tempList = new ArrayList<>();
        tempList.add(lwUserInfo);
        userNameMap.put(name, tempList);
    }
}

**场景二:**仅仅根据List里面每个对象的元素作为Key,对象本身作为Map,这种转换就很简单了。

// 范例1,Key 和 Value 都是 String
Map<String, String> storeNameMap = ckStoreDicts.stream()
    .collect(Collectors.toMap(CkStoreDict::getStoreCode, CkStoreDict::getStoreName));

// 范例2,Value 是对象本身,两种写法
Map<String, CkDeptDict> map = ckDeptDicts.stream()
    .collect(Collectors.toMap(CkDeptDict::getDeptCode, Function.identity()));
Map<String, CkDeptDict> map2 = ckDeptDicts.stream()
    .collect(Collectors.toMap(CkDeptDict::getDeptCode, a -> a));

总结陈词

💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

CSDN_END.gif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战神刘玉栋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值