关于getorCreate 方法的作用
来源:7-5 关键词索引对象定义与服务实现

邓武博
2019-02-24
Set<Long> unitIdSet = CommonUtils.getorCreate(key,keywordUnitMap,ConcurrentSkipListSet::new);
unitIdSet.addAll(value);
这两行操作是不是可以这样理解:
- 通过getorCreate 创建并返回一个绑定了 keywordUnitMap key 的空集合unitIdSet
- 向这个Set集合中添加数据,是会影响 keywordUnitMap key 对应的 value,效果等同与
keywordUnitMap .put(“key”,unitIdSet) ?
写回答
1回答
-
同学你好:
Set<Long> unitIdSet = CommonUtils.getorCreate(key,keywordUnitMap,ConcurrentSkipListSet::new);
从函数定义中可以看到,这句代码的含义是:尝试从 keywordUnitMap 中获取 key(即 Map.get(key)),得到一个 ConcurrentSkipListSet。如果获取不到,则通过 ConcurrentSkipListSet::new 工厂创建一个 ConcurrentSkipListSet 对象。且此时,这个 key 已经 put 到 ConcurrentSkipListSet 中了。
unitIdSet.addAll(value);
由于获取到的 unitIdSet 是 keywordUnitMap 中的 key 对应到的 value。所以,unitIdSet 的修改可以简单的认为是:keywordUnitMap.put(key, unitIdSet)。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
242021-09-10
相似问题