// 遍历 emerOrWarVoListfor (EmerOrWarVo emerOrWarVo : emerOrWarVoList) { // 遍历 taskVos for (TaskVo taskVo : taskVos) { // 如果 emerOrWarVo 的 id 与 taskVo 的 formId 相同 if (emerOrWarVo.getId().equals(taskVo.getFormId())) { // 将 taskVo 的 msgState 赋值给 emerOrWarVo 的 unread 属性 emerOrWarVo.setUnread(taskVo.getMsgState()); // 匹配成功后可以跳出循环,提高效率 break; } }}优化这段代码
时间: 2024-02-14 12:09:25 浏览: 89
【C/C++项目开发资源】二叉树层次遍历-二叉树层次遍历
这段代码的时间复杂度为 O(n^2),因为它使用了两个 for 循环来遍历 `emerOrWarVoList` 和 `taskVos`,在数据量比较大的情况下可能会影响程序性能。可以考虑使用哈希表来优化。
优化后的代码如下:
```
// 定义哈希表
Map<Long, Integer> map = new HashMap<>();
// 遍历 taskVos,将 formId 和 msgState 的值存入哈希表中
for (TaskVo taskVo : taskVos) {
map.put(taskVo.getFormId(), taskVo.getMsgState());
}
// 遍历 emerOrWarVoList,如果哈希表中存在对应的 formId,则将其对应的 msgState 赋值给 unread 属性
for (EmerOrWarVo emerOrWarVo : emerOrWarVoList) {
Integer msgState = map.get(emerOrWarVo.getId());
if (msgState != null) {
emerOrWarVo.setUnread(msgState);
}
}
```
这里只需要遍历一次 `taskVos` 就可以将数据存储到哈希表中,时间复杂度为 O(n)。然后再遍历 `emerOrWarVoList`,如果哈希表中存在对应的 formId,则将其对应的 msgState 赋值给 `unread` 属性,时间复杂度也为 O(n)。因此,总的时间复杂度为 O(n)。通过使用哈希表来优化,可以提高程序的效率。
阅读全文