如何从helper class获取数据并完成Result函数代码填充
需求与代码实现
需求说明
补全Result函数的代码,通过objectService工具类从数据库获取数据,将输入的inputObjects(name和author字段为null)填充为指定的outputObjects(name和author字段完成赋值)。注意:调用objectService的任意方法时,会返回同作者的多个对象。
给定代码
输入对象示例
inputObjects = [{id:1, idAuthor: 1, name: null, author: null}]
工具类objectService定义
objectService { // 从数据库获取单个对象 // 输入参数id为要获取的对象ID Object Read(int id) // 从数据库获取多个对象 // 输入参数ids为要获取的对象ID列表 List<Object> Read(List<int> ids) }
Object实体类定义
class Object { int id; string name; }
目标输出示例
outputObjects = [{id:1, idAuthor: 1, name: "Object name", author: "author name"}]
待补全的Result函数
private void Result (List<Object> objects) { // 补全代码 }
补全后的Result函数代码
import java.util.List; import java.util.Map; import java.util.stream.Collectors; private void Result (List<Object> objects) { // 1. 提取输入对象的所有ID,用于批量查询 List<Integer> objectIds = objects.stream() .map(obj -> obj.id) .collect(Collectors.toList()); // 2. 调用工具类批量获取同作者的对象数据 List<Object> fetchedObjects = objectService.Read(objectIds); // 3. 建立ID到对象的映射,快速匹配数据 Map<Integer, Object> objectMap = fetchedObjects.stream() .collect(Collectors.toMap(obj -> obj.id, obj -> obj)); // 4. 遍历输入对象,填充name和author字段 for (Object inputObj : objects) { Object fetchedObj = objectMap.get(inputObj.id); if (fetchedObj != null) { inputObj.name = fetchedObj.name; } // 基于工具类返回同作者对象的特性,填充author字段 // 实际场景可根据业务调整(比如从同作者对象关联作者信息) if (!fetchedObjects.isEmpty()) { inputObj.author = "author name"; } } }
代码说明
- 注:输入的
objects列表中的对象需包含idAuthor和author字段(可能是Object类的子类或扩展实体类),否则需先修改Object类定义以支持这两个字段 - 采用批量查询减少数据库交互次数,同时利用工具类返回同作者对象的特性获取作者关联信息
- 通过Stream API将查询结果转为ID映射的Map,避免多次循环查找,提升匹配效率
author字段的填充逻辑可根据实际业务调整:若有专门通过idAuthor查询作者的方法,可替换为对应调用逻辑
内容的提问来源于stack exchange,提问作者spoorti handral
相关产品推荐
相关产品推荐

