```java
    /**
     * 根据 refId 和 funcCode 查询收藏个数
     *
     * @param refIds   关联资源的 id
     * @param funCode `like` 点赞 `collect`收藏
     * @param module  模块
     * @return refId 和数量映射
     */
    Map<Long, Integer> collectCountByRef(List<Long> refIds, String funCode, Integer module);

    /**
     * 查询收藏或点赞状态
     * @param module 1:****
     * @param userId  用户 id
     * @param funCode `like` 点赞 `collect`收藏
     * @param ds id
     * @return inspireId 和状态映射
     */
    Map<Long, Boolean> getCollectStatus(Integer module, Long userId, String funCode, List<Long> inspireIds);
```
举报· 98 次点击
登录 注册 站外分享
9 条回复  
wxw752 初学 2024-9-1 00:26:00
封装个对象,返回的时候对象接收。我们公司查库之后严禁返回 Map
inza9hi 小成 2024-9-1 00:49:44
用 Map 相当于把静态语言当做动态语言用。如果能好好管理一下 Map 的 Key ,其实也还好,胜在自由。
SoloCompany 小成 2024-9-1 01:15:57
@wxw752 你有看问的是啥吗, 那请问 Map<Long, Integer> 如何封装成一个对象? 一个有 2 的 64 次方个字段的对象, 字段名分别为 r0, r1, 到 r 无穷吗
ZiLong 小成 2024-9-1 01:43:03
对象类型就是命名的 Map ,换一下思路,改成 List<XXX>,XXX 是你定义的返回对象类型,比如你第一个方法,XXX 的属性就是 filedName ,count
mx1700 小成 2024-9-1 01:51:10
我觉得可读性没什么问题呀,如果非要改,可以把 map 封装到一个类里,比如叫 CollectCounter ,类暴露一个方法: getCount(refId)
Znemo 小成 2024-9-1 01:57:50
非要讲究某种意义上的可读性的话,就一个类持有一个 Map 或者继承某个 Map ,做一样的事,再提供一些查询函数。在你这个场景中,感觉意义不是很大。
dallaslu 初学 2024-9-1 02:04:44
不如给 Map 变量起个好名字:

```java
Map<Long, Integer> likeCountOfRefId = collectCountByRef(refIds, "like", module);
```
iseki 小成 2024-9-1 06:36:13
我觉得还行,没啥问题,你又不是返回个 Map<String, Any>,你还是觉得实在不行,把这个 Map 自己包一下给个名字,不过我觉得没必要。
xiangyuecn 初学 2024-9-1 07:42:37
好了,8 小时的工作量变 1 小时了😂
返回顶部