怎么将List<String> list1和List<Integer> list2存入Map<String,Integer>中
时间: 2023-11-11 15:59:06 浏览: 144
可以通过循环遍历两个List,将它们的元素一一对应存入Map中,例如:
```java
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("orange");
List<Integer> list2 = new ArrayList<>();
list2.add(1);
list2.add(2);
list2.add(3);
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < list1.size(); i++) {
map.put(list1.get(i), list2.get(i));
}
```
这样就将list1和list2中的元素一一对应存入了Map中,其中list1中的元素作为键,list2中对应的元素作为值。如果两个List的长度不同,需要考虑如何处理,例如可以只将两个List中索引位置对应的元素存入Map中,而忽略其他元素。
相关问题
用java写import java.util.*; public class Main { public static void main(String[]) { Set<Integer> set = new TreeSet<>(Arrays.asList(1, 2, 6, 5, 3, 4)); List<String> list = Arrays.asList("aa", "cc", "bb", "d", "f", "e"); Map<Integer, String> map = new HashMap<>(); Iterator<Integer> itSet = set.iterator(); Iterator<String> itList = list.iterator(); while (itSet.hasNext() && itList.hasNext()) { map.put(itSet.next(), itList.next()); } System.out.println(map); } }
这段代码的作用是将一个 Set 和一个 List 合并成一个 Map,其中 Set 中的元素作为 Map 的 key,List 中的元素作为 Map 的 value,最后输出这个 Map。
具体实现是,先创建一个 TreeSet 对象 set,其中包含 1, 2, 6, 5, 3, 4 这几个元素。再创建一个 List 对象 list,其中包含 "aa", "cc", "bb", "d", "f", "e" 这几个元素。然后创建一个 HashMap 对象 map,用于存放合并后的结果。
接着,创建两个迭代器 itSet 和 itList 分别对 set 和 list 进行遍历,然后将迭代器 itSet 和 itList 所指向的元素依次作为 key 和 value 存入 map 中。最后,输出这个 map 即可。
输出结果为:{1=aa, 2=bb, 3=d, 4=e, 5=f, 6=cc}。
根据代码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对象中返回。
阅读全文