Set<String> setOld = Arrays.stream(keyword).collect(Collectors.toSet())
时间: 2024-05-30 20:15:27 浏览: 13
这是一个将字符串数组转换为Set类型的Java 8代码。具体来说,它利用Arrays.stream()将keyword数组转换为一个流对象,然后调用Collectors.toSet()将流转换为Set<String>类型。这样就可以方便地进行Set集合的操作,例如去重、交集等。需要注意的是,这段代码需要引入Java 8的库。
相关问题
List<String> channelList = Arrays.stream(userList.toArray(new UserInfoVO[userList.size()])) .flatMap(record -> Arrays.stream(record.getChannel().split(","))) .collect(Collectors.toList()); List<String> typeList =Arrays.stream(userList.toArray(new UserInfoVO[userList.size()])) .flatMap(record -> Arrays.stream(record.getType().split(","))) .collect(Collectors.toList());再将这两个list放回page中
可以使用 Java 8 的 `forEach` 方法将 `channelList` 和 `typeList` 放回 `page` 中的每个 `UserInfoVO` 对象中。例如:
```java
List<UserInfoVO> userList = page.getRecords();
List<String> channelList = Arrays.stream(userList.toArray(new UserInfoVO[userList.size()]))
.flatMap(record -> Arrays.stream(record.getChannel().split(",")))
.collect(Collectors.toList());
List<String> typeList = Arrays.stream(userList.toArray(new UserInfoVO[userList.size()]))
.flatMap(record -> Arrays.stream(record.getType().split(",")))
.collect(Collectors.toList());
userList.forEach(user -> {
user.setChannelList(channelList);
user.setTypeList(typeList);
});
page.setRecords(userList);
```
这里假设 `UserInfoVO` 类中有 `setChannelList` 和 `setTypeList` 方法,用于设置 `channelList` 和 `typeList` 的值。然后使用 `forEach` 方法遍历 `userList` 中的每个 `UserInfoVO` 对象,将对应的 `channelList` 和 `typeList` 值设置进去。最后将更新后的 `userList` 重新设置到 `page` 中。
根据代码1“public List<ProjectCountVO> projectCount(String beginTime, String endTime, Integer forceType, String projectId) { // 查询任务列表 List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId); if (CollectionUtil.isEmpty(taskTaskList)) { return Collections.emptyList(); } List<ProjectCountVO> result = new ArrayList<>(); // 将任务按照项目ID分组 Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId)); //查询项目名称 String bspToken = RequestHeaderHolder.getBspToken(); String bspUserId = RequestHeaderHolder.getUserId(); String bspUserEnvId = RequestHeaderHolder.getCompanyId(); String bspUserTenant = RequestHeaderHolder.getCompanyId(); String companyId = RequestHeaderHolder.getCompanyId(); ProjectCondition projectCondition = new ProjectCondition(); projectCondition.setAppId("23031408164321600"); projectCondition.setCompanyId(companyId); projectCondition.setDesignStatusList(Arrays.asList(2,3)); projectCondition.setPageSize(-1); projectCondition.setUserId(bspUserId); List<QueryAllProject> queryAllProject = applicationServicePlatformClientProxy.listUserProject(bspToken, bspUserId, bspUserEnvId, bspUserTenant, projectCondition);”修改代码2“// 遍历项目及对应的任务列表 for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) { projectId = projectTaskEntry.getKey(); ProjectCountVO projectCountVO = new ProjectCountVO(); projectCountVO.setId(projectId); String projectName = queryAllProject; projectCountVO.setName(projectName); List<TaskTask> taskList = projectTaskEntry.getValue(); projectCountVO.setTaskCount(taskList.size()); Integer problemCount = CollectionUtil.isEmpty(taskList) ? 0 : taskList.stream().collect(Collectors.summingInt(task -> Optional.ofNullable(task.getProblemNum()).orElse(0))); projectCountVO.setProblemCount(problemCount); result.add(projectCountVO); } return result;”,最终能够查到指定“projectname”
代码2中需要将查询到的项目列表queryAllProject转化为Map<String, String>类型,以便根据projectId获取项目名称。修改后的代码如下:
```
// 查询任务列表
List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId);
if (CollectionUtil.isEmpty(taskTaskList)) {
return Collections.emptyList();
}
List<ProjectCountVO> result = new ArrayList<>();
// 将任务按照项目ID分组
Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId));
//查询项目名称
String bspToken = RequestHeaderHolder.getBspToken();
String bspUserId = RequestHeaderHolder.getUserId();
String bspUserEnvId = RequestHeaderHolder.getCompanyId();
String bspUserTenant = RequestHeaderHolder.getCompanyId();
String companyId = RequestHeaderHolder.getCompanyId();
ProjectCondition projectCondition = new ProjectCondition();
projectCondition.setAppId("23031408164321600");
projectCondition.setCompanyId(companyId);
projectCondition.setDesignStatusList(Arrays.asList(2,3));
projectCondition.setPageSize(-1);
projectCondition.setUserId(bspUserId);
List<QueryAllProject> queryAllProjectList = applicationServicePlatformClientProxy.listUserProject(bspToken, bspUserId, bspUserEnvId, bspUserTenant, projectCondition);
// 将查询到的项目列表转化为Map<String, String>类型
Map<String, String> projectMap = queryAllProjectList.stream().collect(Collectors.toMap(QueryAllProject::getId, QueryAllProject::getName));
// 遍历项目及对应的任务列表
for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) {
projectId = projectTaskEntry.getKey();
ProjectCountVO projectCountVO = new ProjectCountVO();
projectCountVO.setId(projectId);
String projectName = projectMap.get(projectId); // 根据projectId获取项目名称
projectCountVO.setName(projectName);
List<TaskTask> taskList = projectTaskEntry.getValue();
projectCountVO.setTaskCount(taskList.size());
Integer problemCount = CollectionUtil.isEmpty(taskList) ? 0 : taskList.stream().collect(Collectors.summingInt(task -> Optional.ofNullable(task.getProblemNum()).orElse(0)));
projectCountVO.setProblemCount(problemCount);
result.add(projectCountVO);
}
return result;
```
在代码中,我们将查询到的项目列表queryAllProjectList转化为Map<String, String>类型的projectMap,然后在遍历项目及对应的任务列表时,根据projectId从projectMap中获取到对应的项目名称,最终将结果存入ProjectCountVO对象中返回。